ListBoxを操作するクラスモジュール ② 全選択

ListBoxを操作するクラスモジュールを、私なりに作成中。
昨日は、リストボックスのリストに配列をあてるまで、を行った。
infoment.hatenablog.com

今日は、昨日の続きから。
f:id:Infoment:20200930213428p:plain

クラスモジュール(ListBoxControl)

私だけかもしれないが、リストボックスに於いて、何かと登場する
以下の操作を追加してみた。

  • 全選択
  • 全解除

ついでに思い付きで、以下も追加。

  • 選択反転
' リストボックス内の全行を選択。
Public Sub SelectAll()
    For i = 0 To TargetListBox.ListCount - 1
        TargetListBox.Selected(i) = True
    Next
End Sub

' リストボックス内の全行を非選択。
Public Sub UnselectAll()
    For i = 0 To TargetListBox.ListCount - 1
        TargetListBox.Selected(i) = False
    Next
End Sub

' リストボックス内の全行について、選択状態を反転。
Public Sub ReverseSelection()
    For i = 0 To TargetListBox.ListCount - 1
        TargetListBox.Selected(i) = Not TargetListBox.Selected(i)
    Next
End Sub

それでは、昨日のユーザーフォームに追加してみよう。

Dim Lbc As VBAProject.ListBoxControl

Private Sub UserForm_Initialize()
    ' リストを作成するための配列。
    Dim arr As Variant
        arr = Range("A1").CurrentRegion
    
    ' クラスモジュール初期化。
    Set Lbc = New VBAProject.ListBoxControl
    ' ListBox1を対象としてセット。
    Set Lbc.TargetListBox = ListBox1
    ' 配列からリスト作成。
        Lbc.SetList arr
End Sub

' 全選択。
Private Sub SelectAllButton_Click()
    Lbc.SelectAll
End Sub

' 全非選択。
Private Sub UnselectAllButton_Click()
    Lbc.UnselectAll
End Sub

' 選択反転。
Private Sub ReverseSelectionButton_Click()
    Lbc.ReverseSelection
End Sub

結果がコチラ。
f:id:Infoment:20200930214733g:plain

良い感じになってた。

次回に続きます。

参考まで。