1、打开文件——选项

2、点击 自定义功能区,勾选开发工具,点击确定

3、选中单元格,点击开发工具,点击插入选择activeX控件的第四个,在表格中画框,点击属性


3、属性修改如图三处

字典表格如下:

4、编辑VBA
首先Excel安装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 = 7 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

点击调试,编译 VBAProject
Ctrl+S保存,选择否,保存类型选择启用宏的工作薄


即可实现多选

本文介绍了如何在Excel中通过VBA编程和ActiveX控件创建一个可自动根据单元格内容调整的多选ListBox1。步骤包括设置开发工具、编写VBA代码、配置ListBox1的属性和事件处理。
4179

被折叠的 条评论
为什么被折叠?



