リストボックスのアイテムを検索
今回は、リストボックスの項目を検索する方法を2種類ご紹介します。
前方一致で検索する
項目名を前方一致で検索するには、リストボックスクラスのFindStringメソッドを使用します。
ListBox名.FindString(“検索文字”, [検索開始位置])
[]は省略可能
それではサンプルを見てみましょう。
以下は、ListBox1という名前のリストボックスにおいて、”A”から始まる項目の位置を検索する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Dim iFind As Integer Dim sStr As String '検索値をセット sStr = "A" '先頭一致検索 iFind = ListBox1.FindString(sStr) '見つかった場合は0から始まるインデックス番号、見つからなければ-1 If iFind >= 0 Then MsgBox(sStr & "から始まる項目は" & iFind + 1 & "番目に存在します。") Else MsgBox(sStr & "から始まる項目はありません。") End If |
上記を実行することで、ListBox1に設定されている項目の中で、最初に見つかった”A”から始まる項目の位置が取得されます。
今回は見つからなかった場合の処理もELSE句に記載しています。
なお、取得結果は1番目を0として出力する点に注意が必要です。
完全一致で検索する
項目名を完全一致で検索するには、リストボックスクラスのFindStringExactメソッドを使用します。
ListBox名.FindStringExact(“検索文字”, [検索開始位置])
[]は省略可能
それではサンプルを見てみましょう。
以下は、ListBox1という名前のリストボックスにおいて、”A”という項目の位置を検索する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Dim iFind As Integer Dim sStr As String '検索値をセット sStr = "A" '完全一致検索 iFind = ListBox1.FindStringExact(sStr) '見つかった場合は0から始まるインデックス番号、見つからなければ-1 If iFind >= 0 Then MsgBox(sStr & "という項目は" & iFind + 1 & "番目に存在します。") Else MsgBox(sStr & "という項目はありません。") End If |
上記を実行することで、ListBox1に設定されている項目の中で、最初に見つかった”A”という項目の位置が取得されます。
FindStringExactメソッドは完全一致検索ですので、”ABC”などの”A”を含むが一致はしない項目はヒットしません。
その他は、使い方や出力仕様等、FindStringメソッドと同様です。
以上が、リストボックスの項目を検索する方法です。
ぜひ参考にしてみてください。