请问如何使用VBA在excel2016中设置多选下拉菜单,选择的结果可以显示多个选项
可不可以有想详细的步骤,在网找了好多都不行,现在我的excel连连VB编辑器都不能使用
最佳答案
前言Excel下拉列表多选框实现
Excel在数据有效性中提供了下拉列表,但并不支持多选,利用VBA编程实现了多选的问题。
现以Sheet2工作表单击J列(J1以外的单元格)弹出对话框供多选为例,进行VBA编程。
材料电脑和EXcel软件。方法1在工作簿中,右键单击"Sheet2"工作表标签——左击查看代码,在代码编辑区编辑如下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) "说明:监听sheet1发生的用户操作事件
If ActiveCell.Column = 10 And ActiveCell.Row > 1 Then "说明:当前激活列为J列,第二行以下
Call ShowFM "调用显示窗体宏名
End If
End Sub
Sub ShowFM()
UserForm1.Show
End Sub
1)主菜单——插入——用户窗体,在"工具箱"里拖放"列表框"、"命令按钮"和“标签”到窗体上。
调整这三个控件的大小尺寸和位置以及窗体的大小尺寸。
2)在工程窗口右击UserForm1——查看代码,在代码编辑区编辑如下代码:
Private Sub UserForm_Initialize()
With UserForm1.ListBox1
.RowSource = "Sheet2!A1:A49" "设定源数据区域 ,下拉列表框的数据来源
.ColumnCount = 1 "设定列数
.ColumnHeads = False "设定列标题。标题为数据区域的上一行
.BoundColumn = 2
.MultiSelect = fmMultiSelectMulti "按空格键或单击鼠标以选定列表中一个条目或取消选定。
" .MultiSelect = fmMultiSelectExtended "按 Shift 并单击鼠标,或按 Shift 的同时按一个方向键,将所选条目由前一项扩展到当前项。按 Ctrl 的同时单击鼠标可选定或取消选定。
" .MultiSelect = fmMultiSelectSingle "只可选择一个条目(默认)。
End With
UserForm1.CommandButton1.Caption = "确定"
UserForm1.Label1.Caption = "请选择"
End Sub
Private Sub CommandButton1_Click()
Dim Arr(), k&, i&
ReDim Arr(1 To 1)
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
k = k + 1
ReDim Preserve Arr(1 To k)
"Arr(k) = .List(i, 1)
Arr(k) = Sheet2.Range("A" & (i + 1)).Value "获取Sheet2列表中A列i+1行的值
End If
Next i
End With
"MsgBox "您选择了:" & Join(Arr, ",")
UserForm1.Hide
"Application.ActiveSheet.Range("A1").Value = Join(Arr, ",")
Application.ActiveCell.Value = Join(Arr, ",") "将值放入到当前单元格
End Sub
至此VBA编程完毕。
4在工作表Sheet2的A1:A49区域填写下拉列表框的数据源后,点击J列(J1以外的单元格)就可以进行多选输入了。因为代码规定了 "Sheet2!A1:A49"这个区域为下拉列表框的数据源 ,所以,要想变动必须修改代码。(在步骤❸代码的第3行)
演示如下:

其他回答
暂无其它回答!