所以我想要实现的是当有人点击组合框中的某一年(位于工作表中的单元格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不起作用。
我提前感谢您的所有时间和帮助:)
答案 0 :(得分:1)
答案 1 :(得分: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"