Excel表格实现下拉复选框多选
1准备数据源
打开要实现的excel表格,将选项数据放到sheet2
2开启“开发工具”
开启“开发工具”步骤:文件->选项->自定义功能区->开发工具->“确定”保存
完成以上准备工作
3具体实现
3.1插入列表框控件
选中单元格->开发工具->插入->ActiveX控件->列表框(ActiveX控件)
3.2设置列表框控件属性
选中列表框控件->开发工具->设计模式->属性
3.3编辑VBA代码实现功能
开发工具->设计模式->查看代码
注意: Excel需要提前安装VBA支持库;
VBA代码:
Private Sub ListBox1_Change()
If Reload Then Exit Sub '加载ListBox1
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then t = t & "," & ListBox1.List(i)
Next
ActiveCell = Mid(t, 2)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ListBox1
'第 2 列 且 单元格大于 1,因为表头的字段不需要进行多选
If ActiveCell.Column = 13 And ActiveCell.Row > 1 Then
t = ActiveCell.Value
Reload = True '如果是根据单元格的值修改列表框,则暂时屏蔽listbox的change事件。
For i = 0 To .ListCount - 1 '根据活动单元格内容修改列表框中被选中的内容
If InStr(t, .List(i)) Then
.Selected(i) = True
Else
.Selected(i) = False
End If
Next
Reload = False
.Top = ActiveCell.Top + ActiveCell.Height '以下语句根据活动单元格位置显示列表框
.Left = ActiveCell.Left
.Width = ActiveCell.Width
.Visible = True
Else
.Visible = False
End If
End With
End Sub
3.4调试运行
调试->编译 VBAProject
运行效果:
保存文件时选择“保存类型”为:
(多个下拉复选框实现效果要在VBA里面做调整)