Note: The other languages of the website are Google-translated. Back to English

警告

JUser :: _load:无法载入用户ID为:8858

如何在Excel中使用多个复选框创建下拉列表?

许多Excel用户倾向于创建带有多个复选框的下拉列表,以便每次都从列表中选择多个项目。 实际上,您无法使用数据验证功能创建带有多个复选框的列表。 在本教程中,我们将向您展示两种在Excel中创建带有多个复选框的下拉列表的方法。

使用列表框创建带有多个复选框的下拉列表
答:使用源数据创建一个列表框
B:命名您将找到所选项目的单元格
C:插入形状以帮助输出所选项目
使用功能强大的复选框轻松创建带有复选框的下拉列表
下拉列表的更多教程...


使用列表框创建带有多个复选框的下拉列表

如下面的屏幕快照所示,在当前工作表中,范围A2:A11中的所有名称将成为列表框的源数据。 单击单元格C4中的按钮可以输出选定的项目,列表框中的所有选定项目将显示在单元格E4中。 为此,请执行以下操作。

A.创建一个带有源数据的列表框

1。 点击 开发商 > 插页 > 列表框(Active X控件)。 看截图:

2.在当前工作表中绘制一个列表框,右键单击它,然后选择 租房 从右键单击菜单中。

3。 在里面 租房 对话框,您需要配置如下。

  • 3.1在 列表填充范围 框,输入您将在列表中显示的来源范围(此处输入范围 A2:A11);
  • 3.2在 列表样式 框中选择 1-fmList StyleOption;
  • 3.3在 多选 框中选择 1 – fmMultiSelectMulti;
  • 3.4关闭 租房 对话框。 看截图:

B:命名您将找到所选项目的单元格

如果需要将所有选择的项目输出到指定的单元格(例如E4)中,请执行以下操作。

1.选择单元格E4,输入 列表框输出名称框 然后按 输入 键。

C.插入形状以帮助输出所选项目

1。 点击 插页 > 形状 > 长方形。 看截图:

2.在工作表中绘制一个矩形(此处在单元格C4中绘制该矩形)。 然后右键单击矩形并选择 分配宏 从右键单击菜单中。

3。 在里面 分配宏 对话框中,单击 全新 按钮。

4.在开幕 Microsoft Visual Basic应用程序 窗口,请替换原始代码 模块 带有以下VBA代码的窗口。

VBA代码:创建带有多个复选框的列表

Sub Rectangle1_Click()
'Updated by Extendoffice 20200730
Dim xSelShp As Shape, xSelLst As Variant, I, J As Integer
Dim xV As String
Set xSelShp = ActiveSheet.Shapes(Application.Caller)
Set xLstBox = ActiveSheet.ListBox1
If xLstBox.Visible = False Then
    xLstBox.Visible = True
    xSelShp.TextFrame2.TextRange.Characters.Text = "Pickup Options"
    xStr = ""
    xStr = Range("ListBoxOutput").Value
    
    If xStr <> "" Then
         xArr = Split(xStr, ";")
    For I = xLstBox.ListCount - 1 To 0 Step -1
        xV = xLstBox.List(I)
        For J = 0 To UBound(xArr)
            If xArr(J) = xV Then
              xLstBox.Selected(I) = True
              Exit For
            End If
        Next
    Next I
    End If
Else
    xLstBox.Visible = False
    xSelShp.TextFrame2.TextRange.Characters.Text = "Select Options"
    For I = xLstBox.ListCount - 1 To 0 Step -1
        If xLstBox.Selected(I) = True Then
        xSelLst = xLstBox.List(I) & ";" & xSelLst
        End If
    Next I
    If xSelLst <> "" Then
        Range("ListBoxOutput") = Mid(xSelLst, 1, Len(xSelLst) - 1)
    Else
        Range("ListBoxOutput") = ""
    End If
End If
End Sub

请注意: 在代码中 矩形1 是形状名称; ListBox1 是列表框的名称; 选择选项接送选项 是形状显示的文字; 和 列表框输出 是输出单元格的范围名称。 您可以根据需要进行更改。

5。 按 其他 + Q 同时关闭按键 Microsoft Visual Basic应用程序 窗口。

6.单击矩形按钮将折叠或展开列表框。 当列表框展开时,检查列表框中的项目,然后再次单击矩形以将所有选定的项目输出到单元格E4中。 参见下面的演示:

7.然后将工作簿另存为 Excel MacroEnable工作簿 用于将来重用代码。


使用功能强大的工具创建带有复选框的下拉列表

上述方法过于复杂,难以处理。 在这里强烈推荐 带有复选框的下拉列表 实用程序 Kutools用于 Excel 帮助您轻松创建带有指定范围,当前工作表,当前工作簿或所有打开的工作簿的复选框的下拉列表,具体取决于您的需求。 请参见下面的演示:
立即下载并尝试! (30天免费试用)

除了上述演示之外,我们还提供了逐步指南,以演示如何应用此功能来完成此任务。 请执行以下操作。

1.打开您已设置数据验证的工作表下拉列表,单击 库工具 > 下拉列表 > 带有复选框的下拉列表 > 点击“设置”。 看截图:

2。 在里面 下拉列表和复选框设置 对话框,请进行以下配置。

  • 2.1)在 适用于 部分,指定您将在其中创建下拉列表中项目复选框的应用范围。 您可以指定一个 一定范围, 当前工作表, 当前工作簿 or 所有打开的工作簿 根据您的需求。
  • 2.2)在 模式 部分中,选择要输出所选项目的样式;
  • 这里需要 修改 选项为例,如果选择此选项,则单元格值将根据所选项目进行更改。
  • 2.3)在 分隔器 框,输入一个定界符,您将使用该定界符将多个项目分开;
  • 2.4)在 文本方向 部分,根据需要选择文本方向;
  • 2.5)点击 OK 按钮。

3.最后一步,单击 库工具 > 下拉列表 > 带有复选框的下拉列表 > 启用复选框的下拉列表 激活此功能。

从现在开始,当您单击指定范围内具有下拉列表的单元格时,将弹出一个列表框,请选中复选框以选择项目以输出到单元格中,如下图所示(以“修改”模式为例) )。

有关此功能的更多详细信息, 请访问这里.

  如果您想免费试用该工具(30天), 请点击下载,然后按照上述步骤进行操作。


相关文章:

在Excel下拉列表中键入时自动完成
如果您有一个包含大值的数据验证下拉列表,则需要在列表中向下滚动以查找合适的列表,或直接在列表框中键入整个单词。 如果在下拉列表中键入第一个字母时有允许自动完成的方法,一切将变得更加容易。 本教程提供了解决问题的方法。

在Excel中从另一个工作簿创建下拉列表
在工作簿中的工作表之间创建数据验证下拉列表非常容易。 但是,如果数据验证所需的列表数据位于另一个工作簿中,您将怎么办? 在本教程中,您将详细了解如何从Excel中的另一个工作簿创建拖放列表。

在Excel中创建可搜索的下拉列表
对于具有众多价值的下拉列表,找到合适的价值并非易事。 以前,我们已经介绍了一种在下拉框中输入第一个字母时自动完成下拉列表的方法。 除了自动完成功能之外,您还可以使下拉列表可搜索,以提高在下拉列表中查找适当值时的工作效率。 为了使下拉列表可搜索,请尝试本教程中的方法。

在Excel下拉列表中选择值时自动填充其他单元格
假设您已经基于单元格区域B8:B14中的值创建了一个下拉列表。 在下拉列表中选择任何值时,都希望在选定单元格中自动填充单元格范围C8:C14中的相应值。 为了解决该问题,本教程中的方法将对您有所帮助。

下拉列表的更多教程...


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能。 支持Office / Excel 2007-2019和365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能30天免费试用。 60天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (68)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
这是太棒了。 但是如果可以将多选放置在光标处于活动状态的位置会更好。 不一定是代码指定的。
该评论由网站上的主持人最小化
这正是我一直在寻找的,是否可以修改代码以允许所选数据显示在列下方的单独单元格中? 所以而不是:星期一,星期二,星期三,显示为。 星期一星期二星期三
该评论由网站上的主持人最小化
这正是我一直在寻找的,是否对代码进行了修改,将列表框中的下一个选择放在下一行。 例如一二三而不是:一、二、三
该评论由网站上的主持人最小化
你能解释一下你是如何在 E4 单元格上添加 ListBoxOutput 的吗
该评论由网站上的主持人最小化
您好如何为多个单元格复制此列表框。 只是复制和粘贴是行不通的。 您能否例如在每个单元格(E5、E6、E7、E8、...)中解释一下,我该如何放置这个选择框?
该评论由网站上的主持人最小化
您能否解释一下如何轻松复制此列表框 100 行? (为 100 行中的每一行单独的列表框)
该评论由网站上的主持人最小化
一旦输出完成并再次按下按钮,列表框中先前选择的项目将无法更改。 如何解决?
该评论由网站上的主持人最小化
谢谢! 这很棒,而且有效!
该评论由网站上的主持人最小化
我是这方面的新手,但谁能告诉我如何创建一个多选列表框,例如,当我选择一个名字时。 我希望列表框适合单个。
示例:我有一个包含联系信息等的姓名列表。我想为列表中的每个姓名创建一个重复的列表框。 我希望它在我选择一个名称时自动打开,并在我转到另一行信息时折叠回单元格。 请指教。 提前致谢。
该评论由网站上的主持人最小化
亲爱的兰迪,
抱歉无法解决这个问题。
该评论由网站上的主持人最小化
它按照说明完美运行,但是如果我保护它给出的工作表并出错。 有什么解决方法吗?
该评论由网站上的主持人最小化
按照说明完美工作。 但是,我如何在受保护的工作表上使用它。 目前,如果我在保护工作表后使用它,它会给我和错误“运行时错误'-2147024809(80070057)':指定值超出范围”
该评论由网站上的主持人最小化
亲爱的阿米特·苏德,
在保护工作表之前,请将输出单元格格式化为解锁,然后应用下面的 VBA 代码。 感谢您的评论。

子矩形2_Click()
将 xSelShp 调暗为形状,xSelLst 调为变体,I 调为整数
出错时继续下一步
设置 xSelShp = ActiveSheet.Shapes(Application.Caller)
设置 xLstBox = ActiveSheet.ListBox1
如果 xLstBox.Visible = False 那么
xLstBox.Visible = True
xSelShp.TextFrame2.TextRange.Characters.Text = "拾取选项"
其他
xLstBox.Visible = 假
xSelShp.TextFrame2.TextRange.Characters.Text = "选择选项"
对于 I = xLstBox.ListCount - 1 到 0 步 -1
如果 xLstBox.Selected(I) = True 那么
xSelLst = xLstBox.List(I) & ";" & xSelLst
结束如果
接下来我
如果 xSelLst <> "" 那么
Range("ListBoxOutput") = Mid(xSelLst, 1, Len(xSelLst) - 1)
其他
范围(“列表框输出”)=“”
结束如果
结束如果
END SUB
该评论由网站上的主持人最小化
“正如您所解释的,我已经使用 ActiveX 列表框创建了一个文件,在那里我输入了一些数据并添加了一些属性。我使用列表中的复选框检查了一些数据,并保存并退出文件。但是虽然重新打开文件,它没有显示任何已检查的数据。任何人都可以给我一个建议来保存这些更新。”
任何人都可以帮助我吗?
该评论由网站上的主持人最小化
美好的一天,
请将以下 VBA 代码放入 ThisWorkbook 代码窗口。
在代码中,Sheet6 是工作表的默认名称,其中包含要保留选择的列表框,如下图所示。 ListBox1 是列表框的名称。 请根据需要更改它们。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)
调用 SaveSelections
END SUB

私有子 Workbook_Open()
调用 RestoreSelections
END SUB

私人子 SaveSelections()

Dim arr() 作为变体,i 一样长,j 一样长

使用 Sheet6.OLEObjects("ListBox1").Object
如果 .ListIndex > 0 那么
对于 i = 0 到 .ListCount - 1
如果 .Selected(i) 那么
j = j + 1
ReDim 保留 arr(1 到 j)
arr(j) = 我
结束如果
下一页
Names.Add Name:="Selections", RefersTo:=arr, Visible:=False
结束如果
结束

END SUB

私有子恢复选择()

Dim arr 作为变体,i 作为整数

arr = [选择]

使用 Sheet6.OLEObjects("ListBox1").Object
对于 i = 1 到 UBound(arr)
.Selected(arr(i)) = True
下一页
结束

END SUB
查看附件 (1 / 5)
该评论由网站上的主持人最小化
谢谢您的回复先生,但在我的文件的情况下它不起作用,你能把你的邮件ID发给你,这样我就可以把我的文件邮寄给你了。
预先感谢
该评论由网站上的主持人最小化
亲爱的文殊菩萨,
请将您的文件发送至 zxm@addin99.com。 希望我能帮上忙。
该评论由网站上的主持人最小化
此外,您需要将工作簿保存为启用 Excel 宏的工作簿,并在每次更改列表框的选择时激活代码。
该评论由网站上的主持人最小化
我想自动更新不同列中的名称。 如果可能的话,是否有可能请分享我的代码。
该评论由网站上的主持人最小化
令人惊叹的工作,但是在我关闭 excel 并再次打开它之后,复选框中的检查消失了,所以如果我单击按钮,所有列表都将消失,任何解决方案都将消失
请有人帮助我
非常感谢您的先进
该评论由网站上的主持人最小化
亲爱的天使,
我们发表了一篇文章“如何在 Excel 中保存或保留 ActiveX 列表框的选择?” 其中介绍了在关闭并重新打开工作簿后保存列表框选择的方法。
您可以点击此链接获取更多信息: https://www.extendoffice.com/documents/excel/5051-excel-listbox-save-selection.html
该评论由网站上的主持人最小化
令人惊讶的是它的工作原理,但是在我保存文件并再次打开它后我遇到了一个问题,复选框列表中的所有检查都消失了
你能帮我做这个吗 非常感谢
该评论由网站上的主持人最小化
此外,它总是在保存并再次打开文件后更改列表框的大小和形状,如果有人对此问题有解决方案,请帮助我

非常感谢
该评论由网站上的主持人最小化
亲爱的马克,
我们发表了一篇文章“如何在 Excel 中保存或保留 ActiveX 列表框的选择?” 其中介绍了在关闭并重新打开工作簿后保存列表框选择的方法。
您可以点击此链接获取更多信息: https://www.extendoffice.com/documents/excel/5051-excel-listbox-save-selection.html
该评论由网站上的主持人最小化
你好,

我想知道是否有一种方法可以将拾取选项定向到多个单元格(不仅仅是 E4),或者将选择设置为下拉清单,以便我可以从清单中选择多个选项,但重复这样做并且独立于我所做的其他选择。 例如,我将如何使用相同的取件选项列表从同一取件列表中输入 E5、E6、E7 等的不同项目选择。

谢谢
该评论由网站上的主持人最小化
嗨 LizKats,
请尝试以下代码。 希望我能帮上忙。 谢谢你。

子矩形2_Click()

'更新者 Extendoffice 20200529

将 xSelShp 调暗为形状,xSelLst 调为变体,i 调为整数

设置 xSelShp = ActiveSheet.Shapes(Application.Caller)

设置 xLstBox = ActiveSheet.ListBox1

将 xRg 调暗为范围

将 xCount、xFNum、xR、xC 调暗为整数

将 xStr 调暗为字符串

如果 xLstBox.Visible = False 那么

xLstBox.Visible = True

xSelShp.TextFrame2.TextRange.Characters.Text = "拾取选项"

其他

xLstBox.Visible = 假

xSelShp.TextFrame2.TextRange.Characters.Text = "选择选项"

设置 xRg = Range("ListBoxOutput")

xCount = xLstBox.ListCount - 1

xStr = ""

对于 i = xLstBox.ListCount - 1 到 0 步 -1

如果 xLstBox.Selected(i) = True 那么

xStr = xLstBox.List(i) & ";" &xStr

结束如果

接下来,我



如果 xRg.Value = "" 那么

xRg.Value = xStr

其他

设置 xRg = xRg.Offset(1, 0)

当 xRg.Value <> ""

设置 xRg = xRg.Offset(1, 0)

循环

xRg.Value = xStr

结束如果

结束如果

END SUB
该评论由网站上的主持人最小化
你好,

非常感谢你这篇精彩的文章! 这是我在评论中寻找的修改后的代码! 但是,我看到组合的 xStr 字符串添加了一个分号“;” 以某种方式结束。 我无法调试如何不在字符串末尾包含分号。

另外,有没有办法为 xRg 指定特定的单元格范围? 我指的是 Set xRg = Range("ListBoxOutput") 并希望将 ListBoxOutput 更改为 H5:H10 和 H15:20 之类的东西。 这有可能吗?
该评论由网站上的主持人最小化
它工作正常,非常感谢您的帮助。 我这里有一个问题是,所有的输出都在同一个单元格 E4 中,我们如何在不同的单元格中获得输出例如:E4 中的 C4、E5 中的 C5、E6 中的 C6 等的输出。
该评论由网站上的主持人最小化
美好的一天,
你说的问题还不能解决。
该评论由网站上的主持人最小化
Добрый день! Прошу помочь。
Как сделать так чтобы каждое значение выходило на новой клетке? чтобы по выходило по вертикали?
该评论由网站上的主持人最小化
帮助!!! 如何在不同范围内(垂直)输出?
该评论由网站上的主持人最小化
子矩形2_Click()
'更新者 Extendoffice 20190924
将 xSelShp 调暗为形状,xSelLst 调为变体,I 调为整数
将 xRg 调暗为范围
设置 xSelShp = ActiveSheet.Shapes(Application.Caller)
设置 xLstBox = ActiveSheet.ListBox1
如果 xLstBox.Visible = False 那么
xLstBox.Visible = True
xSelShp.TextFrame2.TextRange.Characters.Text = "拾取选项"
其他
xLstBox.Visible = 假
xSelShp.TextFrame2.TextRange.Characters.Text = "选择选项"
设置 xRg = Range("ListBoxOutput")
对于 I = 0 到 xLstBox.ListCount - 1
如果 xLstBox.Selected(I) = True 那么
xSelLst = xLstBox.List(I)
xRg.Value = Mid(xSelLst, 1, Len(xSelLst))
设置 xRg = xRg.Offset(1, 0)
结束如果
接下来我
结束如果
END SUB
该评论由网站上的主持人最小化
Como puedo 复制品 éste ejercicio en las filas loweres ?
我怎样才能在下面的行中复制这个练习?
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点