在图表上初始化Excel 2007 ComboBox

时间:2009-08-08 21:38:55

标签: excel-2007 excel-vba vba excel

我想初始化图表上存在的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。建议表示赞赏。

1 个答案:

答案 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控件,但不幸的是,它看起来不像你可以在图表表中添加一个。