構文
構文は以下の通りです。
With リストボックス名
For 番目 = .ListCount - 1 To 0 Step -1
If .Selected(番目) Then
.Selected(番目) = False
End If
Next
End With
For 番目 = .ListCount - 1 To 0 Step -1
If .Selected(番目) Then
.Selected(番目) = False
End If
Next
End With
解説
For 番目 = .ListCount - 1 To 0 Step -1は、ListCountでリストボックスの項目数を洗い出し、ループで後ろから前へ選択されているかどうかを確認します。If .Selected(番目) ThenのSelected(番目)は、リストボックスの何番目の項目が選択されているかどうかを確認します。.Selected(番目) = Falseでは、選択されている項目を解除します。Selected(番目)をFalseにすることで、その項目の選択が外れます。
プログラミング例
具体的なプログラミング例を紹介します。
Sub 複数選択解除()
' リストボックスの複数行選択解除
Dim 番目 As Integer
' リストボックスの選択を解除する
For 番目 = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.Selected(番目) Then
ListBox1.Selected(番目) = False
End If
Next
End Sub
' リストボックスの複数行選択解除
Dim 番目 As Integer
' リストボックスの選択を解除する
For 番目 = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.Selected(番目) Then
ListBox1.Selected(番目) = False
End If
Next
End Sub
上記のプログラムでは、ユーザーフォーム内のリストボックスで選択された項目を解除しています。リストボックスが複数行選択可能な場合、選択されている項目を1つずつ確認し、選択が解除されます。ListBox1.Selected(番目)をFalseに設定することで、選択が解除される仕組みです。
まとめ
この方法では、リストボックスの項目が複数選択されている場合に、その選択を解除するために、ListBox1.Selected(番目)をFalseに設定します。ループで項目を確認し、選択されているかどうかを調べた後、選択を解除するので、複数行の選択解除が効率的に行われます。