Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2116|回复: 8

[已解决]如何用字典法删除listview未选择的 Sheet1中的数据?

[复制链接]
发表于 2013-8-24 20:43 | 显示全部楼层 |阅读模式
如何用字典法删除listview未选择的 Sheet1中的数据?

也就是 Listview中选择了的保留下来不删除,其他的全部删除Sheet1 中的数据?

最佳答案
2013-8-24 22:12
  1. Private Sub CommandButton3_Click()      '删除未选
  2.     Application.ScreenUpdating = False
  3.     Set d = CreateObject("scripting.dictionary")
  4.     With ListView1
  5.         For I = .ListItems.Count To 1 Step -1
  6.             If .ListItems(I).Checked = True Then
  7.                 d(.ListItems(I).Text * 1) = "T"
  8.             End If
  9.         Next I
  10.     End With
  11.     With Sheet1
  12.         For I = .Range("A65536").End(xlUp).Row To 2 Step -1
  13.             If d(.Cells(I, 1).Value) = "" Then .Rows(I).Delete
  14.         Next I
  15.     End With
  16.     Application.ScreenUpdating = True
  17.     MsgBox "已成功删除了未选择的记录!"
  18. End Sub
复制代码

如何删除listview未选择的 Sheet1中的数据.rar

16.61 KB, 下载次数: 4

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-8-24 22:01 | 显示全部楼层
回复

使用道具 举报

发表于 2013-8-24 22:09 | 显示全部楼层
删除listview未选择的数据.rar (13.75 KB, 下载次数: 12)
回复

使用道具 举报

发表于 2013-8-24 22:12 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton3_Click()      '删除未选
  2.     Application.ScreenUpdating = False
  3.     Set d = CreateObject("scripting.dictionary")
  4.     With ListView1
  5.         For I = .ListItems.Count To 1 Step -1
  6.             If .ListItems(I).Checked = True Then
  7.                 d(.ListItems(I).Text * 1) = "T"
  8.             End If
  9.         Next I
  10.     End With
  11.     With Sheet1
  12.         For I = .Range("A65536").End(xlUp).Row To 2 Step -1
  13.             If d(.Cells(I, 1).Value) = "" Then .Rows(I).Delete
  14.         Next I
  15.     End With
  16.     Application.ScreenUpdating = True
  17.     MsgBox "已成功删除了未选择的记录!"
  18. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-8-24 22:39 | 显示全部楼层
zjdh 发表于 2013-8-24 22:12

谢谢!符合要求!

但不知为什么我原来的代码 crr都是空值,只有crr的最后一个的值是brr最后的哪条记录?
回复

使用道具 举报

 楼主| 发表于 2013-8-24 22:46 | 显示全部楼层
lisachen 发表于 2013-8-24 22:01

谢谢!单列时可以实现,但有6列数据时不行!
回复

使用道具 举报

 楼主| 发表于 2013-8-24 22:52 | 显示全部楼层
zjdh 发表于 2013-8-24 22:12

d(.ListItems(I).Text * 1) = "T"

数值乘以1可以理解,等于 “T”  是什么意思?不是用 =“”吗?
回复

使用道具 举报

发表于 2013-8-25 07:45 | 显示全部楼层
sendsend 发表于 2013-8-24 22:39
谢谢!符合要求!

但不知为什么我原来的代码 crr都是空值,只有crr的最后一个的值是brr最后的哪条记录 ...

没去研究你的代码。
回复

使用道具 举报

发表于 2013-8-25 07:49 | 显示全部楼层
sendsend 发表于 2013-8-24 22:52
d(.ListItems(I).Text * 1) = "T"

数值乘以1可以理解,等于 “T”  是什么意思?不是用 =“”吗?

=“T" 是一个标志,意为true,用于后续语句中判别,因字典中查不到的结果为“空”,就可辨别了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 18:15 , Processed in 0.459040 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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