VBA Excel -通过ListView控件进行循环



我在UserForm上有4个ListViews。是否有可能检查以下代码中哪个ListView是活动的/已选中的?

Private Sub CommandButton8_Click()
For i = 1 To 4
If me."ListView" & i) is selected Then
MsgBox me("ListView" & i ).Name
End If
Next i
End Sub

它不工作与ListView.SelectedItem。我真的不明白为什么?即使没有选择ListView,MsgBox也会以SelectedItem的形式弹出ListView的第一个项目。

For i = 1 To 4
If Me("ListView" & i).SelectedItem > 0 Then
MsgBox "listview" & i & " selected item is " & Me("ListView" & i).SelectedItem
End If
Next i

首先,当数据被加载到listview控件中时,第一个项目被自动选中。因此,为了避免这种情况的发生,在添加数据后将第一项的Selected属性设置为False。例如…

Me.ListView1.ListItems(1).Selected = False

Me.Controls("ListView" & i).ListItems(1).Selected = False

然后,您可以使用以下代码循环遍历每个listview控件,然后循环遍历每个项目以检查哪个被选中…

Private Sub CommandButton1_Click()

Dim i As Long
For i = 1 To 4

Dim lv As ListView
Set lv = Me.Controls("ListView" & i)

With lv
Dim j As Long
For j = 1 To .ListItems.Count
If .ListItems(j).Selected Then
MsgBox lv.Name & " - " & .ListItems(j).Text
Exit Sub 'optional
End If
Next j
End With

Next i

End Sub

如果您可以选择多个项目,并且希望显示每个项目的名称,请从代码中删除Exit Sub

相关内容

  • 没有找到相关文章

最新更新