如何知道列表视图中是否没有选择项目?

时间:2013-08-26 16:34:42

标签: excel listview excel-vba vba

我在userform中有一个删除按钮,用于从列表视图中删除所选项目。问题是,当没有选择项目时(至少没有突出显示),它会删除第一个项目。我怎么知道是否没有选择项目,所以我可以避免删除任何内容?

这是我尝试过的,当没有选择任何内容时,它仍会移除第一个项目。

Private Sub CommandButtonDelete_Click()
    If Not (ListView1.SelectedItem Is Nothing) Then
       ListView1.ListItems.Remove ListView1.SelectedItem.Index
   End If
End Sub

修改

问题似乎是总是选择了一个项目。那么,新问题,当用户点击listView外部时,如何取消选择该项?

1 个答案:

答案 0 :(得分:0)

您可以采用与确定是否没有选择任何内容相同的方式取消选择项目。

例如:

Me.ListBox1.ListIndex = -1

将取消选择在ListBox1中选择的任何内容。请注意,这是ListBoxes,我没有使用ListViews,但我想同样适用。当然你需要把它放在某个地方。最简单的地方就是把它放在Private Sub UserForm_Click()但是我不建议这样做,因为那时任何人在选择后点击用户形态时都会清除选择。放置它的最佳位置是Private Sub ListBox1_Click(),然后确定是否已经选中了被点击的那个。在这种情况下,您编写代码以取消选择它...

确认这适用于ListBoxes(没有ListViews):

Private Sub CommandButton1_Click()
    If Not (Me.ListBox1.ListIndex = -1) Then
        Me.ListBox1.RemoveItem (Me.ListBox1.ListIndex)
    End If
End Sub

'Will unselect any selection when user clicks anywhere on the userform (but not on a control ON the userform)
Private Sub UserForm_Click()
    Me.ListBox1.ListIndex = -1
End Sub

Private Sub UserForm_Initialize()
    Me.ListBox1.AddItem "asdf"
    Me.ListBox1.AddItem "basdf"
End Sub