定制Excel选择性输入列表:[2]VBA弹出列表法
1、插入用户窗体:
打开Excel工作簿-->Alt+F11进入VBA窗口-->右击工程窗口空白处-->插入用户窗体。
2、设置用户窗体属性:
在用户窗体属性窗口中,将窗体名称改为“F1”,将标题改为“学历选项”。
3、插入列表框:
点选控件箱中的列表框-->点击用户窗体空白处放置-->调整好大小、位置。
4、设置列表框属性:
按图示设置列表框的背景色和字体。
5、用户窗体程序设计:
双击用户窗体或列表框,进入用户窗体代码窗口,在窗口中输入程序代码。
6、用户窗体程序设计——UserForm_Activate()事件
在用户窗体激活事件中给列表框初始化,设置窗体位置为单元格跟随。
Private Sub UserForm_Activate()
With ListBox1
.AddItem "大学本科"
.AddItem "大专"
.AddItem "中专"
.AddItem "高中以下"
.AddItem "硕士研究生"
.AddItem "博士研究生"
End With
F1.Top = ActiveCell.Top + 50
F1.Left = ActiveCell.Left + ActiveCell.Width + 25
End Sub
7、用户窗体程序设计——listBox1_Change()事件
当列表框的值发生改变(选择了某个选项)时,激活该事件。在事件中将列表框用户所选的值赋给当前单元格。
Private Sub listBox1_Change()
ActiveCell.Value = ListBox1.Value
Cells(ActiveCell.Row, 1).Select
Unload F1
End Sub
8、工作表程序设计——Worksheet_SelectionChange事件
在工程窗口中找到调用弹出列表的工作表,双击进入其代码窗口,输入下面的程序。
'当所选单元格为第3列、2至最后一行的某个单元格时,激活F1窗体。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim EndRow As Single
EndRow = Range("a65536").End(xlUp).Row '数据区域最后一行的行号
If Target.Row > 1 And Target.Row <= EndRow And _
Target.Column = 3 And Target.Rows.Count = 1 _
Then F1.Show '激活F1窗体
End Sub
9、使用效果: