2016-02-25 55 views
0

我試圖設置圖表爲變量,但由於我在電子表格中有多個圖表,我需要能夠激活圖表並將其分配給變量。VBA Excel 2010 - 將未知圖表分配給變量

Ffor記錄ChartHandel = ActiveSheet.ChartObject(1)不工作,我自己也嘗試.Shape(1)Chart("Name of chart")和這些太不工作

Dim ChartHandel2 As Chart 

ActiveSheet.ChartObjects(1).Activate 
ChartHandel2 = ActiveChart 

即使這個被錯誤'91,對象變量或與塊varible未設置」它看起來像它應該工作,我確信我有這個工作在一個點(作爲解決方法)

我的問題是基本上你可以指定一個圖表如果它不活躍(如果可能的話)如何分配一個圖表?

回答

2

你必須使用Set關鍵字在賦值語句的左邊部分

furthemore Chart對象是ChartObject對象的成員

這裏有與他們打交道的一個小例子

Option Explicit 

Sub ChartObjects() 

Dim chartObj As ChartObject 

With ThisWorkbook.Worksheets("charts") 

    For Each chartObj In .ChartObjects 

     With chartObj ' to deal with current "ChartObject" object 

      With .Chart ' to deal with "Chart" object of "ChartObject" object 
       .ChartType = xlXYScatter ' or another XlChartType Enumeration (https://msdn.microsoft.com/en-us/library/office/ff838409.aspx) 

       MsgBox .ChartArea.Name 

       .HasLegend = False 

       .ChartTitle.Caption = "chart title you need" 
      End With 

     End With 

    Next chartObj 

End With 

End Sub 
+0

哦,我的臉......我不能相信我忘記了'set',只是看到它讓我想爬進一個深暗的洞 –

+0

我設置這個答案爲im現在要使用'Set ChartHandel2 = ActiveChart'來解決這個問題,現在'For Each'循環有點超出我的意思,如果你可以提供一個解釋它們的鏈接,它會對我有很大幫助 –

+0

無需激活然後設置。您可以簡單地編寫「Set ChartHandel2 = ActiveSheet.ChartObjects(1)」,但請記住,「ChartHandel2」必須聲明爲「ChartObject」 – user3598756

1

如果您不確定是否有索引,則可以使用每個循環遍歷圖表。事情是這樣的

Sub testChart() 

    Dim testSheet As Worksheet 
    Set testSheet = Sheets("Sheet1") 

    Dim myChart As ChartObject 
    Dim chartVariable As Chart 
    With testSheet 
     For Each myChart In .ChartObjects 
      Set chartVariable = myChart.Chart 

     Next myChart 
    End With 

End Sub 

警告:它唯一的演示版本,則需要進一步的變化取決於分配對象時,你需要

+0

您的代碼有效,但我需要爲它做出的更改以超出我的方式工作,所以我會在可以並希望使用您的代碼或user3598756代碼時查看「For Each」循環,具體取決於它是如何工作的,謝謝你的回答,雖然 –