本文介绍一种打开Excel之后,自动加载下拉列表框数据的方法。网上有介绍采用worksheet_activate事件实现的方法,但是这种方法有一定缺陷,在打开Excel文件后,如果不切换表格,将无法加载数据。
1、术语
ComboBox,ActiveX控件中的组合框,即下拉列表框。之所以不采用“表单控件”,而采用“ActiveX控件”是为了下一步VBA编程的方便。
worksheet_activate,每一个Excel文件被称为“工作簿 workbook”,该文件内的每一张表格被称为“工作表 worksheet”,在互相切换工作表时,工作表就会被激活,worksheet_activate指令变为真[1]。
workbook_Open,逻辑同上,文件被打开后触发事件。
AddItem,对ComboBox增加条目的命令[2]。
2、正文
在Excel中设置好了下拉列表框,并且已经写入数据,保存文件之后,再次打开,却发现下拉列表框中的数据丢失,无法进行选择,如下图1上部分表示。我想做的是达到图1下半部分的效果。
如图2,在Excel编程界面中,选择ThisWorkbook,在此对象中才能使用workbook_Open命令,如果直接在Sheet中使用是无效的。通过代码直接对Sheet3中的ComboBox进行调用。
3、代码
1 2 3 4 5 6 7 8 9 10 11 12 | Private Sub workbook_Open() With Sheet3 .ComboBox1.AddItem "一般情况" .ComboBox1.AddItem "孤立建筑" .ComboBox1.AddItem "金属屋面砖木结构" .ComboBox1.AddItem "山谷、河边或山顶" End With End Sub |
参考文献
[1] Excel事件(四)事件顺序[EB/OL]. https://cloud.tencent.com/developer/article/1520280
[2] 组合框(ComboBox)应用之一[EB/OL]. https://baijiahao.baidu.com/s?id=1708286776442338471