ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11230|回复: 13

[求助] 如何在VBA中实现下拉复选框

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-5-8 22:45 | 显示全部楼层 |阅读模式
附件之前论坛另一位大师做的,但是我在使用后发现几个问题
1.选择后需要在复选框空白处双击才能完成录入,如何实现勾选后自动录入,或勾选完成后点击其他单元格或按回车就自动完成录入
2.再次对一个单元格勾选的话每次都要全部重新勾选,如何实现重新勾选时留有原来已经够选好的选项,只需要增加或减少某个选项就行。
3.实现多列复选框的时候,必须两列紧挨着,,且设置“值”的时候必须要挪到这两列对应的前一列,如何实现可以设置任意两列或多列。

如何用VBA实现单元格下拉框复选.rar

28.2 KB, 下载次数: 300

如何用VBA实现单元格下拉框复选.rar

28.2 KB, 下载次数: 171

如何用VBA实现单元格下拉框复选2.zip

20.79 KB, 下载次数: 351

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-8 22:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
第一次发帖,上传多了,复选2才是正确的附件

TA的精华主题

TA的得分主题

发表于 2016-5-9 10:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Dim d
  2. Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  3.     If KeyCode = 13 Then
  4.     If ListBox1.ListIndex = -1 Then Exit Sub
  5.     Dim i&, s$
  6.     With ListBox1
  7.         For i = 0 To .ListCount - 1
  8.             If .Selected(i) Then s = s & "," & .List(i)
  9.         Next
  10.         .TopLeftCell.Offset(, -1).Value = Mid(s, 2)
  11.         .Visible = False
  12.     End With
  13.     End If
  14. End Sub


  15. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  16.     If Target.Count > 1 Then Exit Sub
  17.     If Target.Row > 2 And (Target.Column = 2 Or Target.Column = 3) Then
  18.         Dim arr, c&, i&, Brr, bt, r1, aa, bb$, j&
  19.         Set d = CreateObject("Scripting.Dictionary")
  20.         If Target <> "" Then
  21.             If InStr(Target.Value, ",") Then
  22.                 aa = Split(Target.Value, ",")
  23.             Else
  24.                 bb = Target.Value
  25.             End If
  26.         End If
  27.         Brr = [a1].CurrentRegion
  28.         For i = 1 To UBound(Brr, 2)
  29.             d(Brr(2, i)) = i
  30.         Next
  31.         bt = Brr(2, Target.Column)
  32.         Set r1 = Sheets("值").Rows(1).Find(bt, , , 1)
  33.         c = r1.Column
  34.         arr = Sheets("值").Cells(2, c).Resize(Sheets("值").Cells(Rows.Count, c).End(xlUp).Row - 1)
  35.         With ListBox1
  36.             .MultiSelect = 1
  37.             .ListStyle = 1
  38.             .List = arr
  39.             .Top = Target.Top
  40.             .Left = Target.Left + Target.Width
  41.             .Height = Target.Height * 9
  42.             .Width = 90
  43.             .Visible = True
  44.             For i = 0 To .ListCount - 1
  45.                 If bb <> "" Then
  46.                     If bb = .List(i) Then .Selected(i) = 1
  47.                 Else
  48.                     For j = 0 To UBound(aa)
  49.                         If aa(j) = .List(i) Then .Selected(i) = 1
  50.                     Next
  51.                 End If
  52.             Next

  53.         End With
  54.     Else
  55.         ListBox1.Clear
  56.         ListBox1.Visible = False
  57.     End If
  58. End Sub
复制代码

选择后按回车实现。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-9 12:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-12-9 13:56 | 显示全部楼层
本帖最后由 cunfu2010 于 2016-12-9 14:08 编辑
蓝桥玄霜 发表于 2016-5-9 10:07
选择后按回车实现。

蓝版你好,代码放入后,如果点击空白单元格会提示类型不匹配

如何用VBA实现单元格下拉框复选2.zip

20.79 KB, 下载次数: 67

TA的精华主题

TA的得分主题

发表于 2016-12-9 14:12 | 显示全部楼层
本帖最后由 cunfu2010 于 2016-12-9 14:14 编辑
蓝桥玄霜 发表于 2016-5-9 10:07
选择后按回车实现。

另外,这个附件中,单击A2会自动添加“北京”,而单击A3双会自动删除“北京”,这是为什么?

如何用VBA实现单元格下拉框复选2-1.rar

14.07 KB, 下载次数: 57

TA的精华主题

TA的得分主题

发表于 2016-12-10 12:25 | 显示全部楼层
cunfu2010 发表于 2016-12-9 13:56
蓝版你好,代码放入后,如果点击空白单元格会提示类型不匹配

经测试是正常的,没有发现问题。

TA的精华主题

TA的得分主题

发表于 2016-12-10 12:25 | 显示全部楼层
请见附件。

如何用VBA实现单元格下拉框复选2-1.rar

14.54 KB, 下载次数: 615

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-12-10 12:40 | 显示全部楼层

谢谢,还是有这个问题:单击A2会自动添加“北京”,而单击A3双会自动删除“北京”。
见附件。

如何用VBA实现单元格下拉框复选2-1.rar

14.36 KB, 下载次数: 77

TA的精华主题

TA的得分主题

发表于 2016-12-10 12:47 | 显示全部楼层

请问版主,这什么这个excelhome论坛上传excel附件还需要压缩,难道不能改进一下?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 23:40 , Processed in 0.041994 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表