重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
初始化第一个组合框的选项
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "Animals"
.AddItem "Sports"
.AddItem "Food"
End With
End Sub第一个组合框改变时,联动填充第二个
Private Sub ComboBox1_Change()
Dim index As Integer
index = ComboBox1.ListIndex
ComboBox2.Clear
Select Case index
Case Is = 0
With ComboBox2
.AddItem "Dog"
.AddItem "Cat"
.AddItem "Horse"
End With
Case Is = 1
With ComboBox2
.AddItem "Tennis"
.AddItem "Swimming"
.AddItem "Basketball"
End With
Case Is = 2
With ComboBox2
.AddItem "Pancakes"
.AddItem "Pizza"
.AddItem "Chinese"
End With
End Select
End Sub确认按钮:把结果写进工作表
Private Sub CommandButton1_Click()
Range("A1").Value = ComboBox2.Value
End Sub逻辑说明
ComboBox1_Change事件在使用者改变第一个下拉选单时自动触发- 每次触发都先
ComboBox2.Clear清空第二个选单,再用Select Case依照ListIndex(选中项目的编号,从 0 开始)决定要填哪一组新选项
第一个组合框选了 "Animals" 后,第二个组合框自动更新成 Dog、Cat、Horse 这组选项的效果
学完你会
常见错误
- 忘记先
ComboBox2.Clear,切换第一个选单后,第二个选单的旧选项还残留在清单里,新旧混在一起 Select Case的编号(Case Is = 0/1/2)跟AddItem加入的顺序对不上,选到不对应的分类- 把逻辑写在
ComboBox1_Click而不是ComboBox1_Change,用键盘切换选项时不会触发联动
Sources
Blog / Website: