ListBox内で値の検索

おさらい

前回まででComboBoxListBoxについてお勉強しました。

ComboBoxListBoxもユーザーに選択してもらうリストを実現する為に作成する事が出来ます。

リストの元となる値の事をItem(アイテム)といいましたね。Itemの追加は

AddItem(アドアイテム)メソッドを使うんでしたね。今回はそこから更にListBoxに検索機能をつけようかという所です。

ということで今回は新たにユーザーフォームを作成していきましょう。ちなみに今回は事前準備ですので検索機能の完成は次回となる予定です。

ListBoxの元となる値を準備

今回は都道府県を使用していきましょう。

こんな感じでB2のセルから一覧を作成しました。入力がめんどいよって方はExcelに貼り付けやすい形式のサイトさんもあるかと思いますのでそちらから引用して頂ければと思います。

ユーザーフォームを作成

ということでこのリストを実現する為のユーザーフォームを作成していきましょう。

同時に入力ボタン・キャンセルボタン・検索ワードを入力するスペースも作っていきましょう。

いつものようにツールボックスは表示できませんでしたが大体こんな感じですね。

ListBoxにItemを追加(AddItem)

では、作成したListBoxにItemを追加していきましょう。

Private Sub UserForm_Initialize()

    Dim i As Long
    
    For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
        Me.ListBox1.AddItem Cells(i, 2).Value
    Next

End Sub

都道府県なので増える事はないと思いますが念の為End(xlUp).Rowで最終行をとっておきましょう。

キャンセルボタンと入力ボタンを実装

検索は最後に実装するとしてひとまずキャンセルボタンと入力ボタンを実装していきましょう。

キャンセルボタンはいつものように「Unload Me」で問題ないですね。

入力ボタンは今回ListBoxから何も選択されていなかった時のエラートラップをやっておかなければデバッグになってしまいますので注意しましょう。入力箇所はD2のセルにしましょう。

Private Sub CommandButton1_Click()

    Dim inputRng As Range
    
    Set inputRng = Range("d2")
    
    If Me.ListBox1.Value Like "" Then
        MsgBox "リストから選択してください"
        Exit Sub
    End If
    
    inputRng.Value = Me.ListBox1.Value
    
    Unload Me

End Sub

Private Sub CommandButton2_Click()

    Unload Me

End Sub

ListBoxから何も選択されていなかった時は選択を促して再度選択してもらえるようにUnload MeではなくExit Subにしておきましょう。

ということで今回は少し長くなってしまいましたので次回でいよいよ検索機能を実装していきたいと思います。

<<ComboBoxとListBox  ListBox内で値の検索②>>

スポンサーリンク

シェアする

フォローする