VBA Userform:根据Combobox访问不同的图表

时间:2013-07-29 09:53:09

标签: excel vba excel-vba charts userform

我是VBA的初学者,只有一些MATLAB经验。

目前我正在尝试使用Userform显示不同的图形(在同一个用户窗体上),具体取决于ComboBox的输出。我的图表显示基于this tutorial.本质上图片保存为GIF,然后用图像控件打开。

我将我的图表保存为Chart#_ ####,例如; Chart1_4301。数字序列与ComboBox中的选项相同 - 我希望Combobox中的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突出显示。任何建议表示赞赏!

1 个答案:

答案 0 :(得分:1)

我为了解释它,我创建了以下宏。我在活动表格中有四个图表,图表1,图表2,图表3和图表4.在单元格B23中,我输入“图表名称”作为图表1/2/3或4,在此基础上,我的以下宏工作。无论我输入什么图表,它都会将所选图表设置为红色背景,而其余3格式设置为黄色背景。我无法附上我的书因为我无法找到办法。如果您仍然不明白该怎么做,请将您的电子邮件发送给我,我将上传工作簿。

Sub RunMacro()

Dim sht As Worksheet
Dim co As ChartObject

Dim selectedChart As String

Set sht = ActiveSheet ' it may be your sheet like Worksheets("Sheet1") or Worksheets("Sheet2")

selectedChart = sht.Range("B23").Value ' assign the selected chart from combobox

Dim chrt As Chart

'''option 1: Loop through all the charts


For Each co In sht.ChartObjects
    If co.Name = selectedChart Then
        co.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
    Else
        co.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(255, 255, 0)
    End If
Next co

'option 2: select the chart directly and popup the size




Set chrt = sht.ChartObjects(selectedChart).Chart

MsgBox "Selected Chart is " & selectedChart & " and the chart is for " & chrt.ChartTitle.Text

End Sub

希望这会有所帮助。 Vikas B