使用VBAcombobox(窗体控件,内部工作表)中的项来运行macros

所以我想实现的是当某人在combobox(位于工作表A1单元格A1附近)点击某个特定年份时,macros按照被点击的年份运行。 我希望列表项被存储在VBA代码本身,而不是在工作表上select它们(我还没有find关于不使用工作表数据的combobox的单个教程)。

我创build了一个button来将数据加载到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 ####列(testing和运行没有问题)。

目前_GotFocus不起作用。

我事先感谢您的所有时间和帮助:)

用这个

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

请确保Sheets(1)引用您的“ComboBox1”combobox实际所在的工作表

使用表单名称会比较安全

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

最后,如果你想用一些工作表范围的内容来填充combobox,你可以使用:

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

有两种types的combobox。

看到这个问题和答案。 这应该让你去。

当单击combobox时运行macros

您可以参加GotFocus活动并填写combobox。