我是VBA的初學者,只有MATlab的一些經驗。VBA用戶窗體:根據Combobox訪問不同的圖表
目前我正在嘗試使用Userform來顯示不同的圖形(在同一個用戶窗體上),具體取決於ComboBox的輸出。我將我的圖表顯示在this tutorial.上本質上,圖片保存爲GIF,然後用圖像控件打開。
例如,我將圖表保存爲Chart#_ ####; Chart1_4301。數字的順序是一樣的,在組合框的選項 - 我想1_4301在組合框中設置CurrentChart到Chart1_4301,然後通過保存GIF運行和加載圖像控制步驟
Private Sub Open_Graph_But_Click()
'This sub opens a different graph depending on the combobox selection
Set CurrentChart = "Chart" & ComboBox1.Value
CurrentChart.Parent.Width = 900
CurrentChart.Parent.Height = 450
' Save chart as GIF
Fname = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
CurrentChart.Export Filename:=Fname, FilterName:="GIF"
' Show the chart
Image1.Picture = LoadPicture(Fname)
End Subb
我不知道它是否可能通過不同名稱的圖形循環,並且我試圖查找它是如何完成的,但是我不知道這是什麼意思,因此我很難找到有用的東西。
我發現有導致我進入上述設置,但運行時錯誤爲'13':類型不匹配,其中Set CurrentChart = "Chart" & ComboBox1.Value
高亮顯示。任何建議表示讚賞!
確定兩種方法,一種您應該知道圖紙名稱,因此您可以使用圖表名稱來指定圖表名稱,如下所示:set CurrentChart = Worksheets(「SheetName」)。Shapes(「ChartName」)。圖表或工作表(「SheetName」)。ChartObjects(「ChartName」)。圖表。如果您不知道工作表名稱,那麼您可以循環遍歷所有形狀,如下所示(未經測試,只是一個示例): 對於每個工作表 對於sht.ChartObjects中的每個cht如果cht.Name =「YourChartName 「然後 集CurrentChart = CHT 退出對於 結束如果 接下來CHT 接下來SHT – Vikas
@Vikas - 我可以看到你的建議是什麼,我認爲這是可行的。但是沒有辦法編寫一個允許VBA訪問圖形或其他任何文本的腳本,部分文本和部分變量? 如果您需要訪問60個不同的陣列,它們被命名爲Array1,Array2等。有沒有辦法說像For i = 1到60「數組」我...一些代碼...下一個? – Heaviside