2016-07-18 31 views
0

ListViewでチェックされた項目のカウント数が必要です。VBAのListViewでチェックされた項目の数を返す方法

Debug.Print ListView1.ListItems.Item(ListView1.ListItems.Count).Checked //outputs "false" 
Debug.Print ListView1.ListItems(ListView1.ListItems.Count).Checked //outputs "false" 
Debug.Print ListView1.ListItems.Count //outputs 13, because the LV contains 13 items 

は、リストビューをループすることなく、リストビューにchecked項目の数を返す可能性があります:これまでのところ、私は、これが近づいてみました。

+1

可能な重複、リンクでの回答をご確認ください:http://stackoverflow.com/questions/10014493/counting-selected-itemsを-in-a-list-box –

+2

いいえ、あなたは手動で各アイテムとカウントをループする必要があります。 –

+0

@ShaiRado申し訳ありませんが、私は 'ListBox'ではなく' ListView'について話しています!リストビューでは、 'GetSelectedIndices'メソッドはありません。そしてアレックスがすでに言ったように。私はリストビューをループする可能性を持っていますが、私はループなしのソリューションを探しています:)もしあれば、もちろんです。 – yuro

答えて

1

OPはループのないアプローチを望んでいますが、ここでは完全性のためです。きちんとしたノールーピーのアプローチで答えに投票するのは楽しいです!

反復ListItems収集とSelectedプロパティがTrueあるアイテムを数える:

Option Explicit 

Private Sub UserForm_Initialize() 
    With Me.ListView1 
     .ListItems.Add 1, "Hughie", "Hughie" 
     .ListItems.Add 2, "Dewey", "Dewey" 
     .ListItems.Add 3, "Louis", "Louis" 
     .View = lvwList 
     .MultiSelect = True 
    End With 
End Sub 

Private Sub CommandButton1_Click() 
    MsgBox GetSelectedCount(Me.ListView1) 
End Sub 

Function GetSelectedCount(lvw As ListView) As Long 
    Dim lngSelectedCounter As Long 
    Dim lngCounter As Long 

    For lngCounter = 1 To lvw.ListItems.Count 
     If lvw.ListItems(lngCounter).Selected Then 
      lngSelectedCounter = lngSelectedCounter + 1 
     End If 
    Next lngCounter 

    GetSelectedCount = lngSelectedCounter 
End Function 
+0

あなたの答えをありがとう。私はこのアプローチを知っていますが、私はループのないソリューションを探しています! :)しかし、私はあなたに最高の投票を与える! – yuro

+0

@yuro - ありがとう - とにかくそれを投稿すると思った –

関連する問題