簡體   English   中英

VBA Excel - 遍歷 ListView 控件

[英]VBA Excel - looping through ListView Controls

我在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 我其實不明白為什么? 即使沒有選擇ListViewMsgBox也會彈出第一個ListView項作為SelectedItem

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

首先,當數據加載到列表視圖控件上時,第一項被自動選中。 因此,為避免發生這種情況,請在添加數據后將第一項的 Selected 屬性設置為 False。 例如...

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

或者

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

然后你可以使用下面的代碼來循環遍歷每個listview控件,然后for each循環遍歷每一項來檢查選擇了哪一個...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM