我想初始化图表上存在的ComboBox(独立图表,而不是图纸中嵌入的图表),以获得两个值“费用”和“收入”。
我尝试输入一个文字列表('= {“Expenses”,“Income”}'或'=(“Expenses”,“Income”)')但尝试其中任何一个都给了我错误“参考无效”。 (我尝试输入文字的地方是通过右键单击控件>格式控制>控件访问的“输入范围”字段。)
每次激活图表时,我也尝试使用VBA初始化控件:
Private Sub Chart_Activate()
Dim expensesIncomeDropDown As Object
Set expensesIncomeDropDown = Me.Shapes("Drop Down 1") 'Error here
expensesIncomeDropDown.DropDownLines = 2
expensesIncomeDropDown.AddItem "Expenses"
expensesIncomeDropDown.AddItem "Income"
End Sub
(“Drop Down 1”是我记录修改控件时宏录制器使用的索引。我也试过“DropDown1”。)但是指示的行抛出错误:“运行时错误”-2147024809(80070057 )':找不到具有指定名称的项目。“使用VBA IDE的locals窗口检查Me的Shapes属性(图表)表示该集合为空。我尝试从Chart_BeforeDoubleClick事件访问控件(假设Shapes集合尚未针对Activate事件初始化)但我得到了相同的结果。
其他人正在体验same problem。建议表示赞赏。
答案 0 :(得分:0)
从右键菜单的描述中,您使用的是表单控件而不是ActiveX控件。
我认为您不能像使用ActiveX组合框一样在下拉列表中输入值。您必须手动或通过VBA为下拉列表提供包含列表值的输入范围:
Dim shp As Shape
Set shp = chtTest.Shapes(1)
If shp.Type = msoFormControl Then
If shp.FormControlType = xlDropDown Then
shp.ControlFormat.ListFillRange = ThisWorkbook.Names("rngDDValues")
End If
End If
您还应该设置单元格链接,以便检索所选的值。
我建议使用ActiveX控件,但不幸的是,它看起来不像你可以在图表表中添加一个。