0

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

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

例如,我将图表保存为 Chart#_####;图表 1_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突出显示的位置。任何建议表示赞赏!

4

1 回答 1

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

希望这可以帮助。维卡斯 B

于 2013-07-29T13:53:12.150 回答