ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[转帖] 表sheet中添加listbox的完整资料

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-26 11:15 | 显示全部楼层 |阅读模式
https://www.contextures.com/excelvbalistboxcreate.html
eh中没有搜到表sheet中添加listbox的完整资料,这是度娘帮忙搜到的,分享给大家。
黄底是我的注释哈
QQ截图20190526111036.png

ListBoxMultiDays.rar

28.7 KB, 下载次数: 121

TA的精华主题

TA的得分主题

发表于 2019-5-26 12:47 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢分享。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-26 13:51 | 显示全部楼层
放在这里自我欣赏,不喜勿喷
  1. Sub 动态增加ListBox1()
  2.     Set x = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", Link:=False, _
  3.         DisplayAsIcon:=False, Left:=435.6, Top:=30, Width:=115.8, Height:=135)
  4.     With x '各句是有顺序的,不能乱
  5.         .Object.ListStyle = 1
  6.         '.Object.MultiSelect = 1
  7.         '.ListFillRange = "$A$1:$A$5" ''正确写法
  8.         For Each Cel In Sheets("Lists").Range("A1:A4").Cells
  9.             .Object.AddItem Cel.Value2
  10.         Next Cel
  11.         .LinkedCell = "I1" '如果MultiSelect=1就没用了,不能写在MultiSelect之后,
  12.         .Activate '有这一句,才起作用
  13.     End With
  14. End Sub

  15. Sub 动态增加ListBox2()
  16.     Dim i, arr
  17.     arr = Array("A1", "A2", "A3")
  18.     Set x = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", Link:=False, _
  19.         DisplayAsIcon:=False, Left:=435.6, Top:=T, Width:=90, Height:=135)
  20.     With x '各句是有顺序的,不能乱
  21.         .Object.ListStyle = 1
  22.         '.Object.MultiSelect = 1
  23.         '.ListFillRange = "$A$1:$A$5" ''正确写法
  24.         For i = LBound(arr) To UBound(arr)
  25.             .Object.AddItem arr(i)
  26.         Next
  27.         .LinkedCell = Range("I1").Address '如果MultiSelect=1就没用了,不能写在MultiSelect之后,
  28.         .Activate '有这一句,才起作用
  29.     End With
  30. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-26 15:09 | 显示全部楼层
接上
应用:
  1. ''《模块1》的"动态增加ListBox2" 产生ListBox1之后
  2. Private Sub ListBox1_Change()
  3.     If Len(ActiveCell) = 0 Then
  4.         ActiveCell = ListBox1.Text
  5.     Else
  6.         ActiveCell = ActiveCell & "," & ListBox1.Text
  7.     End If
  8. End Sub
  9. Private Sub Worksheet_SelectionChange(ByVal Target As Range)  '鼠标选定触发
  10.     If Target.Column = 1 Then
  11.         ListBox1.Visible = True
  12.         ListBox1.Left = ActiveCell(1, 2).Left  '活动单元横坐标
  13.         ListBox1.Top = ActiveCell(1, 2).Top + 17 '活动单元纵坐标
  14.         ''动态取值
  15.         ListBox1.List = Application.Transpose(Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row))
  16.         Target = ""
  17.     Else
  18.         ListBox1.Visible = False
  19.     End If
  20. End Sub
复制代码

到此,Listbox可进入实用。

TA的精华主题

TA的得分主题

发表于 2019-10-11 15:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-10-25 09:42 | 显示全部楼层
请问,vba写代码时,没有listbox,只有worksheet 和通用?该怎么添加啊,谢谢了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-23 19:33 , Processed in 0.042640 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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