当前位置:首页 > 办公设计 > Office教程 > 如何制作可以多项选择的下拉菜单?

如何制作可以多项选择的下拉菜单?

1年前 (2025-05-24)Office教程2050

今天给大家分享的表格小技巧是:如何制作显示多列同时可以选择多项的下拉菜单?
比如下图,显示三列下拉菜单,可以选择任意多个项目合并到一个单元格……

首先,咱们得有个数据表,用来填充选项菜单的数据。嗯,我们把这份工作表命名为“参数表”,数据如下图所示。A列是商品代码,B列是商品,C列是负责人。

然后,我们在需要制作选项菜单的工作表放一个列表框控件。
在【开发工具】选项卡下单击【插入】按钮,在弹出来的选项菜单中选择ActiveX控件列表框,画在当前工作表。位置随便,大小不论,丑美无关……毕竟这些你说了都不算,待会代码会重置。

需要说明的是,如果这是你在当前工作簿放置的第1个列表框控件,它会被系统默认名称为ListBox1。名字很重要,名字取不好,老婆娶不到,还记得你那个名字叫杨伟的同学吗?——下面的代码,我们都是通过名字来控制控件的一生的。
最后退出设计模式,也就是点击【开发工具】选项卡下的【设计模式】按钮。

OK,最后把以下代码复制粘贴到目标工作表的VBE编辑窗口即可。比如我们这里是粘贴到名称为“入库单”工作表。

代码如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column <> 2 Or Target.Row < 4 Then ListBox1.Visible = False: Exit Sub
    '如果选中的单元格不是第2列,或者小于4行,也就是不在目标范围内,则退出程序
    If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then ListBox1.Visible = False: Exit Sub
    '如果选中的单元格大于1个,则退出程序
    With Sheets("参数表")
        r = .Range("a1:c" & .Cells(Rows.Count, "a").End(xlUp).Row).Value
    End With
    With ListBox1
        '调整位置到单元格处
        .Top = Target.Top 'listbox的顶端位置
        .Left = Target.Left + Target.Width 'listbox的左端位置
        .Width = 250 '宽度
        .Height = 150 '高度
        .Visible = True '可见
        '.ColumnHeads = True '显示标题行
        .ColumnCount = 3 '三列
        .ColumnWidths = "50;120;50" '设置第一列宽度50第二列宽度120……
        .List = r '数据来源
        .MultiSelect = fmMultiSelectMulti '允许通过鼠标点击的方式进行多选
        .ListStyle = fmListStyleOption '选项按钮设置为方形
    End With
End Sub

Private Sub ListBox1_Change()
    Dim i As Long, strMy As String
    With ListBox1
        If .Selected(0) = True Then .Selected(0) = False
        '如果用户选取的是标题行那么撤销选取
        For i = 1 To .ListCount - 1
        '遍历listbox的记录,如果被选中则按换行符合并
            If .Selected(i) = True Then
                strMy = strMy & vbCrLf & .List(i, 1)
                '取list的第二列
                '无论列还是行的索引都是从0开始的,因此第二列为1
            End If
        Next
    End With
    ActiveCell.Value = Mid(strMy, 3)
    '数据写入单元格
End Sub

代码有两个部分组成。

一部分是工作表的Worksheet_SelectionChange事件。当用户选择目标范围内的单元格时,显示设置列表框的位置、大小和数据。

本例中列表框只出现在B列,且行数大于3的情况下。这个可以根据实际情况,自己进行修改。
另一部分是列表框的ListBox1_Change事件,当用户选择列表框的数据时,将数据写入单元格。
其实相关代码都有注释,内急,这里就不再啰嗦了。挥挥手,下期再见。

示例文件下载,度娘她弟度盘:
https://pan.baidu.com/s/1sKf9dl64E8ocKYWxY7Edng
提取码:ebgb

原文:https://mp.weixin.qq.com/s/CJ9taJPOYJ2Tixe5rfLktA

扫描二维码推送至手机访问。

欢迎转载或分享本篇文章。

本文链接:https://www.jcba123.com/article/1571

分享给朋友:

“如何制作可以多项选择的下拉菜单?” 的相关文章

Excel商务图表实战案例,教你用特殊符号打造高端图表!

Excel商务图表实战案例,教你用特殊符号打造高端图表!

通常我们要制作图表,都是在Excel中通过数据来生成图表。但是,今天所要给大家介绍的制作图表方法并非如此,它是利用一些特殊符号,然后通过函数完成对图表制作。这里我们会通过十个案例,详细的教大家制作方法!     01 条形图 公式: =R...

Excel换行那些事儿!教你如何自动换行和强制换行快捷键!

Excel换行那些事儿!教你如何自动换行和强制换行快捷键!

对于一些新手朋友来说,Excel中的自动换行与强制换行都还搞不太清除。所以今天,小汪老师就来给大家讲讲关于Excel中自动换行与手动换行的那些事儿!     Excel自动换行功能 首先,选中需要换行的单元格区域,然后点击「开始」-「对齐方式」-「自动换行」按钮即可。自...

卡通文件袋PPT模板封面的制作!

卡通文件袋PPT模板封面的制作!

文件袋相信大家都见过吧,今天易老师所要讲的就是将文件袋搬到PPT中,教大家制作一个卡通PPT文件袋模板。相信在制作的过程中大家可以学会一些知识!   制作文件袋PPT模板 步骤一、首先设置PPT背景颜色,然后插入一个【同侧圆角矩形】调整颜色。 步骤二、插入两个圆形,注意大小...

毛茸茸的字体 | PPT打造虎皮字体

毛茸茸的字体 | PPT打造虎皮字体

咱们今天来学习一个既简单又漂亮的字体制作,老虎皮做的字体。当然,学习的是方法,你也可以利用各种动物皮毛来打造。 首先,需要一份素材,那就是动物皮毛,这里我就不提供了,大家可以到百度图片搜索一下“动物皮毛”,可以找到一堆的动物皮毛,随便选一个吧!建议找尺寸大点的图片。 输入文字...

Excel下拉菜单,这样的下拉菜单,你用过吗?

Excel下拉菜单,这样的下拉菜单,你用过吗?

先来看常规的下拉菜单制作方法: 在制作下拉菜单时,序列来源只能是单行或单列的区域。 下面这个表格里,数据源是多行多列的,怎么办呢? 不着急,咱们可以糊弄一下Excel…… 步骤1 定义名称 选中任意一列,如B2:B6,在公式选项卡下,设置自定义名称为“名单”...

辅助列在Excel图表制作中的使用

辅助列在Excel图表制作中的使用

分享辅助列在Excel图表制作中的使用方法。先来看数据源和最终的图表效果:默认情况下的条形图数据标签,是全部在一侧显示的,而在这个图表中,垂直轴的月份标签分别在左右对称排列,其实就是用到了辅助列。接下来咱们说说具体的制作步骤:在C列增加一个蹲坑系列,输入公式:=-B2插入簇状条形图:双击条形图的任意...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。