【发布时间】:2013-12-15 19:41:32
【问题描述】:
我希望能够在 VBA 表单中嵌入图表控件,允许用户单击控件的某些部分,这将使用单击的 X 和 Y 值填充隐藏的电子表格。
我已经使用附加控件机制添加了“Microsoft Office Chat 11.0”和“Microsoft Office Spreadsheet 11.0”控件并将每个控件放置在表单上。但是,对于我的生活,我似乎无法将图表绑定到电子表格中包含的数据。我考虑的一种选择是
Dim SpdShtCtr As Spreadsheet
Dim ChartControl As ChChart
Dim XValues() As Variant, YValues() As Variant
XValues = WorksheetFunction.Transpose(SpdShtCtrl.Range("XValues"))
YValues = WorksheetFunction.Transpose(SpdShtCtrl.Range("YValues"))
Dim c
Set c = ChartControl.Constants
With ChartControl
.Clear
.Charts.Add
With .Charts(0).SeriesCollection.Add
.Caption = "Data"
.SetData c.vbDimCategories, c.chDataLiteral, XValues
.SetData c.vbDimValues, c.chDataLiteral, YValues
End With
End With
问题在于它不是动态的 - 如果电子表格中的数据发生变化,图表将不会自动更新。此外,这不起作用。我在.SetData ... 上收到错误“对象不支持此属性或方法”
另一个选项是这样的
Dim SpdShtCtr As Spreadsheet
Dim ChartControl As ChChart
Dim XValues As Range, YValues As Range
Set XValues = SpdShtCtrl.Range("XValues")
Set YValues = SpdShtCtrl.Range("YValues")
Dim c
Set c = ChartControl.Constants
With ChartControl
.DataSource = SpdShtCtrl
.Clear
.Charts.Add
With .Charts(0).SeriesCollection.Add
.Caption = "Data"
.SetData c.vbDimCategories, c.chWORKSHEETRANGECONSTANT, XValues
.SetData c.vbDimValues, c.chWORKSHEETRANGECONSTANT, YValues
End With
End With
但我不知道这是否是将这些控件绑定在一起的正确方法,即使是,常量定义应该是什么,而不是WORKSHEETRANGECONSTANT,以定义到工作表范围的链接。
谁能指出我正确的方向?
【问题讨论】:
标签: excel vba charts controls spreadsheet