在excel中可以为单元格添加数据有效性下拉列表,方便快速地选择要输入的内容,如下图所示:

但是数据有效性的下拉列表只能单选,不能多选。
这时候可以用ActiveX 列表框控件代替,如下图所示:

首先在工作表中插入一个ActiveX 列表框控件命名为“ListBox1”,然后在工作表Sheet1中添加如下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call ListAddItem
With Sheet1.ListBox1
.Left = Target.Offset(0, 1).Left
.Top = Target.Top
.Width = Target.Width
.Height = Target.Height * 10
End With
End Sub
Sub ListAddItem()
Sheet1.ListBox1.Clear
Dim oWK As Worksheet
'列表项所在的工作表中
Set oWK = Sheet2
With oWK
'添加列表项
For i = 2 To .Range("a65536").End(xlUp).Row
With Sheet1.ListBox1
.ListStyle = fmListStyleOption
.MultiSelect = fmMultiSelectMulti
.AddItem oWK.Cells(i, "a").Text, i - 2
End With
Next i
End With
End Sub
Private Sub ListBox1_Change()
'响应列表框中选择了不同项目后的事件
Dim arr()
k = 0
With Sheet1.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
ReDim Preserve arr(k)
arr(k) = .List(i)
k = k + 1
End If
Next i
End With
sText = Join(arr, ",")
Excel.ActiveCell = sText
End Sub


发表评论