每⽇Excel分享(VBA)如何在Excel中实现多选下拉菜单?感
2017再见,2018我来了!我的Excel继续与您每天不见不散!
村长前⾯跟⼤家分享过Excel下拉菜单的制作,但是那些数据有效性制作的下拉菜单都是只能单
选,如下动画:
假如我们需要做多选下拉菜单,⼜该如何实现呢?
效果请看下⾯动画:
实现步骤:
第1步:Sheet1表中插⼊代码,如下图
代码如下:
Private Sub ListBox1_Change()
If ReLoad Then Exit Sub '见下⽅说明
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
If ActiveCell.Column = 1 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
第2步:Sheet2表中插⼊代码,如下图
代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets('Sheet1').ListBox1.ListFillRange = 'data!a1:a' & Cells(1, 1).End(xlDown).Row End Sub
第3步:插⼊模块,然后插⼊代码,如下图:
代码如下:
Public ReLoad As Boolean '开关listbox的change事件
注明:
html下拉菜单的制作方法以上代码并⾮村长所写,来源于EH蓝桥⽞霜⼤神所写,向⼤神致敬!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。