我在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
。