ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请教ListView1选择行添加到ListView2的实例

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-1-13 19:03 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 鄂龙蒙 于 2016-1-13 20:43 编辑

请教:想要在ListView1中显示的多行数据,勾选一行就添加到ListView2,再选一行又添加到ListView2,这方面的实例。
谢谢!
Listview1选择添加到Listview2.rar (17.36 KB, 下载次数: 101)



TA的精华主题

TA的得分主题

发表于 2016-1-13 19:42 | 显示全部楼层
勾选?
请问在哪里勾选,在您自定义的窗体吗?
还是工作表中的数据?

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-13 19:45 | 显示全部楼层
bajifeng 发表于 2016-1-13 19:42
勾选?
请问在哪里勾选,在您自定义的窗体吗?
还是工作表中的数据?

谢谢您!
是在ListView1里选中,一行一行地添加到ListView2

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-13 19:49 | 显示全部楼层
bajifeng 发表于 2016-1-13 19:42
勾选?
请问在哪里勾选,在您自定义的窗体吗?
还是工作表中的数据?

实际上是:如ListView1中显示了10行数据,想有选择地如将2、5、9行数据添加到ListView2中。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-13 20:44 | 显示全部楼层
bajifeng 发表于 2016-1-13 19:42
勾选?
请问在哪里勾选,在您自定义的窗体吗?
还是工作表中的数据?

做了个模拟表,请您帮助!谢谢!

TA的精华主题

TA的得分主题

发表于 2016-1-13 21:08 | 显示全部楼层
鄂龙蒙 发表于 2016-1-13 20:44
做了个模拟表,请您帮助!谢谢!

供参考>>>>>>>>>>>

10A ListView.rar

20.34 KB, 下载次数: 290

TA的精华主题

TA的得分主题

发表于 2016-1-13 21:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Private Sub UserForm_Initialize()
  2.   With ListView1
  3.     .ColumnHeaders.Add , , "姓名", 60
  4.     .ColumnHeaders.Add , , "语文", 55
  5.     .ColumnHeaders.Add , , "数学", 55
  6.      .View = lvwReport
  7.     .Gridlines = True
  8.   End With
  9.   TextBox1.TabIndex = 0
  10. End Sub

  11. Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  12.   Dim firstAddress As String, rng As Range
  13.      ListView1.ListItems.Clear
  14.   If TextBox1.Text = "" Then GoTo line
  15.   With Range("a:a")
  16.     Set rng = .Find(TextBox1.Text, LookIn:=xlValues, Lookat:=xlPart)
  17.     If Not rng Is Nothing Then
  18.       firstAddress = rng.Address
  19.       Do
  20.         Set Item = ListView1.ListItems.Add()
  21.         Item.Text = rng.Text
  22.         Item.SubItems(1) = rng.Offset(0, 1).Text
  23.         Item.SubItems(2) = rng.Offset(0, 2).Text
  24.         Set rng = .FindNext(rng)
  25.       Loop While rng.Address <> firstAddress
  26.     End If
  27.   End With
  28. line:
  29.   ListView1.Height = ListView1.Font.Size * ListView1.ListItems.Count + 25
  30.   Me.Height = ListView1.Height + 70
  31. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-14 09:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

谢谢您!不过想要的不是这种情况。

TA的精华主题

TA的得分主题

发表于 2016-1-14 11:15 | 显示全部楼层
鄂龙蒙 发表于 2016-1-14 09:35
谢谢您!不过想要的不是这种情况。

好吧,那我就把原原本本帮你写一遍吧。

TA的精华主题

TA的得分主题

发表于 2016-1-14 11:16 | 显示全部楼层

  1. Dim dn%, k
  2. Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
  3. 'by bajifeng
  4. ReDim s(1 To dn, 1 To 2)
  5. For Each ck In ListView1.ListItems
  6.     m = m + 1
  7.     If ck.Checked Then
  8.         n = n + 1
  9.         s(n, 1) = n
  10.         s(n, 2) = ListView1.ListItems(m)
  11.     End If
  12. Next
  13. With ListView2
  14.     .ListItems.Clear
  15.     .ColumnHeaders.Add , , "序号", 30
  16.     .ColumnHeaders.Add , , "凭证号码", 50
  17.     .View = lvwReport
  18.     .FullRowSelect = True
  19.     .Gridlines = True
  20.     For i = 1 To UBound(s)
  21.         Set Itm = .ListItems.Add()
  22.         Itm.Text = s(i, 1)
  23.         Itm.SubItems(1) = s(i, 2)
  24.     Next i
  25. End With
  26. End Sub

  27. Private Sub UserForm_Initialize()
  28. Dim arr, a, d, i, t
  29. Set d = CreateObject("scripting.dictionary")
  30. With Sheets("sheet1")
  31.     a = .Range("D2").End(xlDown).Row
  32.     arr = .Range("D2:D" & a)
  33.     For i = 2 To UBound(arr)
  34.         d(arr(i, 1)) = ""
  35.     Next i
  36.     k = d.keys
  37.     t = d.items
  38.     dn = d.Count
  39. End With
  40. With ListView1
  41.     Dim Itm
  42.     .ListItems.Clear
  43.     .ColumnHeaders.Add , , "凭证号码", 50
  44.     .View = lvwReport
  45.     .FullRowSelect = True
  46.     .Gridlines = True
  47.     .MultiSelect = True
  48.     .CheckBoxes = True
  49.     For i = 0 To UBound(k)
  50.         Set Itm = .ListItems.Add()
  51.         Itm.Text = k(i)
  52.     Next i
  53. End With

  54. With ListView2
  55.     .ListItems.Clear
  56.     .ColumnHeaders.Add , , "序号", 30
  57.     .ColumnHeaders.Add , , "凭证号码", 50
  58.     .View = lvwReport
  59.     .FullRowSelect = True
  60.     .Gridlines = True
  61. End With
  62. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-29 18:28 , Processed in 0.033939 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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