当你还在用下拉清单的时候,会VBA的朋友已经开始使用LISTBOX做下面这样的多选清单了!
似乎不管你是什么专业可能都会使用到这样的选择方法或者需求:
你可以直接观看下方的视频解析,
同时需要特别强调的在于,如果你看懂了视频,自己使用这种方法的时候,
下方的代码中需求修改的部分是:
第六行代码,如上面的图片我是选择C列(也就是第三列的时候),多选清单能够被调取出来,
如果你需求在第四列选择进行调取,
第六行代码Target.Column <> 3,你需要修改成:
Target.Column <> 4
以此类推
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then ListBoxYG.Visible = False: Exit Sub
'如果选择多于一个单元格,不执行任何内容
If Target.Column = 1 Then ListBoxYG.Visible = False: Exit Sub
'如果选择的列为第一行,不执行任何内容
If Target.Column <> 3 Or Target.Row < 3 Or _
Target.Offset(0, -1) = '' Then ListBoxYG.Visible = False: Exit Sub
'如果选择的列位不等于3,选择的行位小于3,或者选择的单元格左侧下方没有内容,不执行任何内容.
Dim RG
Dim LR As Long
LR = Sheet2.Range('A9999').End(xlUp).Row
RG = Sheet2.Range('A1:B' & LR)
'多选清单额数据源来源
With ListBoxYG
'多选清单的高度,宽度,顶端,左侧位置等内容的设置.包括清单显示的数据来源.
.Top = Target.Top
.Left = Target.Offset(0, 1).Left
.Width = 120
.Height = 160
.Visible = True
.ColumnCount = 2
.ColumnWidths = '50;80'
.List = RG
End With
End Sub
第二段代码:
所有解析,可以观看视频,并且下载课件进行试验.
Private Sub ListBoxYG_Change()
Dim LR As Long
Dim STR As String
'多选清单额输出单元格设置
With ListBoxYG
For LR = 0 To .ListCount - 1
If .Selected(LR) = True Then
STR = STR & ',' & .List(LR, 1)
End If
Next
End With
ActiveCell.Value = Mid(STR, 2)
End Sub
练习文件下载:
链接:
https://pan.baidu.com/s/1cc3GBGmLpxWFYZ8FY7-pFw
特别说明:
即使保存为永久链接,也会存在失效的可能,
如果某一天下载链接失效,请大家不要产生误解.
如果你的基础,还不错.可以加入到老徐的VBA系列中来.
购买之后,带单号备注加老徐的微信:
xu45711795
如果喜欢老徐的视频,记得给老徐点赞哦!!
谢谢大家的观看!!
本章视频:有点长!!
联系客服