2016-05-27 24 views
0

我正在用多個圖表構建儀表板屏幕。我在他們各自的構建函數中聲明圖表就像這樣。使用VBA爲多個圖表設置圖表大小

Dim chartGallonsComp as ChartObject 
Set chartGallonsComp = wsDest.ChartObjects.Add(Left:=0, Top:=45, Width:=240, Height:=180) 

因爲我有多個圖表,我要傳遞給函數的方法是使用下面

Dim chartSalesComp As ChartObject, chartGallonsComp As ChartObject 
Dim chartCustomers As ChartObject 

Dim ws As Worksheet  
ws = Sheets("Dashboard") 

Dim aryChartOneDimensions(), aryChartTwoDimensions() 
Dim aryChartThreeDimensions() 

aryChartOneDimensions = Array(0, 45, 240, 180) 
aryChartTwoDimensions = Array(240, 45, 240, 180) 
aryChartThreeDimensions = Array(480, 45, 240, 180) 

With ws 
    Set chartGallonsComp = ws.ChartObjects.Add(Left:=aryChartOneDimensions(1), Top:=aryChartOneDimensions(2), 
             Width:=aryChartOneDimensions(3), 
             , Height:=aryChartOneDimensions(4)) 
End With 

我敢肯定,這是可行的。新增方法的參數,我只是不能語法正確。我試過很多方法,包括公式語法

Left:="=aryChartOneDimensions(1)" 

但我的嘗試都沒有奏效。如果這可以完成,請賜教。

回答

0
Set chartGallonsComp = ws.ChartObjects.Add(Left:=aryChartOneDimensions(0), _ 
              Top:=aryChartOneDimensions(1), _ 
              Width:=aryChartOneDimensions(2), _ 
              Height:=aryChartOneDimensions(3)) 

記住數組是默認零基礎,沒有一個基礎(除非你有Option Base 1在你的模塊的頂部,我不認爲這是一個很好的做法)

+0

是的,一直使用C#現在時間太長了,有點生疏,可以回到vba的電子表格。這確實有效。所以要在函數中傳遞該數組?... SomeFunction(ByRef ary()as integer) – dinotom

+0

這應該工作 –

+0

@TimWilliams ...它不喜歡整數,但變體作品 – dinotom

相關問題