感
謝
2017再見,2018我來了!我的Excel繼續(xù)與您每天不見不散!
關(guān)
注
村長前面跟大家分享過Excel下拉菜單的制作,但是那些數(shù)據(jù)有效性制作的下拉菜單都是只能單選,如下動畫:
假如我們需要做多選下拉菜單,又該如何實現(xiàn)呢?
效果請看下面動畫:
實現(xiàn)步驟:
第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 '如果是根據(jù)單元格的值修改列表框,則暫時屏蔽listbox的change事件。
For i = 0 To .ListCount - 1 '根據(jù)活動單元格內(nèi)容修改列表框中被選中的內(nèi)容
If InStr(t, .List(i)) Then
.Selected(i) = True
Else
.Selected(i) = False
End If
Next
ReLoad = False
.Top = ActiveCell.Top ActiveCell.Height '以下語句根據(jù)活動單元格位置顯示列表框
.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 '開關(guān)listbox的change事件
注明:
以上代碼并非村長所寫,來源于EH藍橋玄霜大神所寫,向大神致敬!
聯(lián)系客服