Excel精英培训网

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

[已解决]如何判断listview控件有没有选择内容?

[复制链接]
发表于 2016-3-10 20:18 | 显示全部楼层 |阅读模式
本帖最后由 蝶·舞 于 2016-3-11 10:29 编辑

我在窗体中插入Listview控件,并进行赋值,但我想删除某行时,我的操作是选中某行,然后用ListItems.Remove .SelectedItem.Index进行删除选中的行,但如果我根本就没有选择内容(也就是我没有选中任何一行),点击删除按钮,会自动删除第一行,那么我该如何判断我到底有没有选择内容呢?

最佳答案
2016-3-10 21:25
方法2可以先定义模块级变量
Private n&
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) '单击标题行的事件
  n = Item.Index
End Sub
然后在删除的单击按钮事件中判断 n 值
发表于 2016-3-10 20:38 | 显示全部楼层
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) '单击标题行的事件
  MsgBox Item.Index
End Sub
回复

使用道具 举报

 楼主| 发表于 2016-3-10 20:41 | 显示全部楼层
雪舞子 发表于 2016-3-10 20:38
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) '单击标题行的事件
  MsgBox Item ...

但是我根本就没有选择Listview控件中的任何一行,然后点击“删除"按钮,也会自动删除第一行,我的要求是:如果我没有选择任何行,那么点击”删除"按钮时没有任何动作发生

回复

使用道具 举报

发表于 2016-3-10 20:52 | 显示全部楼层
蝶·舞 发表于 2016-3-10 20:41
但是我根本就没有选择Listview控件中的任何一行,然后点击“删除"按钮,也会自动删除第一行,我的要求是: ...

ListView1初始化默认是选中第一行的,
因此有两种办法:
1 在 Private Sub UserForm_Initialize() 中加上一句:  ListView1.ListItems(1).Selected = False

2 如果选中某行必然要参数单击事件,
因此可以在
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
事件中 判断 Item.Index
如果为0则未选中任何行。
回复

使用道具 举报

发表于 2016-3-10 21:25 | 显示全部楼层    本楼为最佳答案   
方法2可以先定义模块级变量
Private n&
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) '单击标题行的事件
  n = Item.Index
End Sub
然后在删除的单击按钮事件中判断 n 值
回复

使用道具 举报

发表于 2016-3-11 08:53 | 显示全部楼层
  1.     Dim myItem
  2.     Set myItem = Me.ListView1.SelectedItem
  3.     If myItem Is Nothing Then
  4.         MsgBox 1
  5.     Else
  6.         MsgBox 0
  7.     End If
复制代码

评分

参与人数 1 +10 金币 +10 收起 理由
雪舞子 + 10 + 10 赞一个

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 22:36 , Processed in 1.241097 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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