2014-10-01 85 views
0

我正在使用excel vba製作餅圖,部分過程需要我調用SetSourceData函數併爲其提供「Source」參數,該參數應該是類型的範圍。我的源參數碰巧是一個變體,而我得到一個「類型不匹配」錯誤。我已經看到人們通過變體作爲源參數,並沒有得到一個錯誤。有沒有辦法解決它?謝謝。將變量傳遞給SetSourceData導致「類型不匹配」

下面是一些代碼:

mychart.ChartType = xlPie 
mychart.SetSourceData Source:=myVariant 

myVariant包含像 「蘋果」, 「香蕉」, 「梨花」

+0

您是否嘗試過將變量先傳遞給Range變量,然後將其用作源代碼? – 2014-10-01 18:58:47

+0

什麼*確切*在myVariant中? myVariant包含字符串,例如 – Rory 2014-10-01 19:12:18

+0

。 「蘋果」,「香蕉」,「梨」 – animalcroc 2014-10-01 19:13:08

回答

1

See here有關Chart.SetSourceData方法的文檔字符串。源必須是Range對象。因此,如果你的變體評估爲一個範圍,你可能會試圖做的工作。

但是,如果你的變體是一個字符串或其他東西的數組(它聽起來像你的評論可能是),那麼不,它不會工作。

聲明一個明確鍵入爲Range的變量,將數據存儲在該變量中,然後在您的方法中使用該變量。如果您已經將數據存儲在變量數組中,則可以執行以下操作:

Dim wsChartSource as Worksheet 
Dim rChartSource as Range 

Set wsChartSource = ThisWorkbook.Sheets("Sheet Name") 
With wsChartSource 
    'Resize Range object to the size of the array 
    Set rChartSource = .Range(.Cells(1, 1), .Cells(UBound(MyVariantArray), UBound(MyVariantArray, 2))) 
    'Write array to Range 
    rChartSource.Value2 = MyVariantArray 
End With 

'Now use Range object as source for chart 
MyChart.SetSourceData Source:=rChartSource