在所填写的单元格中实现多重选择,可以利用vba制作多选下拉清单实现。
打开excel,在sheet1中笫一行输入班级名称,在A2以下单元格中输入课程名称,空白处需要填写上课老师,在sheet2中A1以下单元格输入编号,B2以下单元放置老师名单。首先将文档保存成.xlsm格式,单击sheet1中任何位置,单击“开发工具”/“插入”,在Active x控件中选择列表框,在表格任意位置拖动,一个列表框,选中列表框,在“名称框”中对列表框进行修改,默认名称为“ListBox1”。在“开发工具”中单击“visual basic”按钮,单击“sheet1”,在右边输入以下代码:
Option Explicit
Private Sub ListBox1_Change()
Dim LR As Long
Dim STR As String
With ListBox1
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
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then ListBox1.Visible = False: Exit Sub
If Target.Column = 1 Then ListBox1.Visible = False: Exit Sub
If (Target.Column < 2 And Target.Column > 20) Or Target.Row < 2 _
Then ListBox1.Visible = False: Exit Sub
Dim RG
Dim LR As Long
LR = Sheet2.Range("A9999").End(xlUp).Row
RG = Sheet2.Range("A1:B" & LR)
With ListBox1
.Top = Target.Top
.Left = Target.Offset(0, 1).Left
.Width = 180
.Height = 380
.Visible = True
.ColumnCount = 2
.ColumnWidths = "50;80"
.List = RG
End With
End Sub
代码解释:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then ListBox1.Visible = False: Exit Sub
如果选择多于一个单元格,不执行任何内容
If Target.Column = 1 Then ListBox1.Visible = False: Exit Sub
如果选择的列为笫一行,不执行任何内容。
If (Target.Column < 2 And Target.Column > 20) Or Target.Row < 2 _
Then ListBox1.Visible = False: Exit Sub
如果选择的列位小于2,大于20,选择的行位小于2或者选择的单元格左侧下方没有内容不执行任何。
Dim RG
Dim LR As Long
LR = Sheet2.Range("A9999").End(xlUp).Row
RG = Sheet2.Range("A1:B" & LR)
多选清单额数据源来源
With ListBox1
多选清单高度、宽度、顶端、左侧位置等内容的设置,包括清单显示的数据来源
Private Sub ListBox1_Change()
Dim LR As Long
Dim STR As String
多选清单额输出单元格设置
在“开发工具”设计模式下,单击“属性”,对列表框的属性进行颜色、字体、选项等属性进行设置
Backcolor:列表框填充颜色
Bordercolor:列表框线条颜色
Borderstyla:风格
Liststyle:选项前面加图标
Multiseleact:多选,选择1-fmMultiSelectMulti
Specialeffect:观看风格
本内容通过公众号“老徐的Excel“学习完成,需要更多的内容,请关注公众号。
,Copyright © 2008-2022 秒下下载站
m.down10s.com .All Rights Reserved