【问题标题】:Using items from VBA combo box (form control, inside worksheet) to run macros使用 VBA 组合框中的项目(表单控件,工作表内部)运行宏
【发布时间】:2016-05-08 01:09:12
【问题描述】:

所以我想要实现的是,当有人在组合框(位于我的工作表中的单元格 A1 附近)内单击某个年份时,宏会根据单击的年份运行。我希望将列表项存储在 VBA 代码本身中,而不是在工作表上选择它们(我还没有找到一个关于不使用工作表数据的组合框的教程)。

我创建了一个按钮来将数据加载到 ComboBox1 中。

这是目前的代码(我并不想严格遵守它,所以如果有更简单的写法,请告诉我):

Sub Button1_Click()
      Sheets("MacroBase").ComboBox1.List = Array("2015", "2016", "2017", "2018", "2019")    
End Sub

Sub ComboBox1_GotFocus()
    With ThisWorkbook.Sheets("MacroBase").Shapes("ComboBox1").ControlFormat
    Select Case .List(.Value)
        Case "2015": ShowOnly2015Columns
        Case "2016": ShowOnly2016Columns
        Case "2017": ShowOnly2017Columns
        Case "2018": ShowOnly2017Columns
        Case "2019": ShowOnly2019Columns
    End With
End Sub

我没有粘贴 ShowOnly####Columns 的代码(测试并运行没有问题)。

目前 _GotFocus 不起作用。

我提前感谢您所有的时间和帮助:)

【问题讨论】:

    标签: vba excel combobox


    【解决方案1】:

    使用这个

    Sheets(1).Shapes("ComboBox1").ControlFormat.List = Array("2015", "2016", "2017", "2018", "2019")
    

    确保Sheets(1) 指的是您的“ComboBox1”组合框实际所在的工作表

    使用像这样的工作表名称会更安全

    Sheets("mySheet").Shapes("ComboBox1").ControlFormat.List = Array("2015", "2016", "2017", "2018", "2019")
    

    最后,如果您想用一些工作表范围内容填充组合框,而不是使用:

    Sheets("mySheet").Shapes("ComboBox1").ControlFormat.ListFillRange = "'My Sheet'!A1:A5"
    

    【讨论】:

    • 运行该代码(带有数组的代码)时得到的是运行时错误 438:对象不支持此属性或方法。我不知道这里发生了什么哈哈
    • 哪一行会抛出该错误?您可能想在代码窗格问题中更新您的实际代码
    • 我创建了一个按钮来执行以下代码: Sheets("MacroBase").Shapes("ComboBox1").ControlFormat.List = Array("2015", "2016", "2017", "2018", "2019") 和同一行抛出错误
    • 哪个“以下”代码?你最好更新问题中的代码
    • 对不起,我对 SO 很陌生 :)
    【解决方案2】:

    有两种类型的组合框。

    查看此问题和答案。这应该能让你继续前进。

    Run Macro When ComboBox is Clicked

    您可以参加GotFocus事件并填写组合框。

    【讨论】:

    • 谢谢你,所以我需要把“_Change”换成“_GtFocus”,但是你知道为什么我的组合框还是空的吗?如何使用 VBA 加载数据?我不想从工作表中选择列表数据。
    • 我看到你从那以后解决了这个问题。因此,请使用链接 stackoverflow.com/questions/ask 询问有关 GotFocus 的新问题,然后将问题的链接发布在此处作为评论,以便我们为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 2016-08-05
    • 2018-04-28
    • 1970-01-01
    相关资源
    最近更新 更多