おさらい
前回まででComboBoxとListBoxについてお勉強しました。
ComboBoxもListBoxもユーザーに選択してもらうリストを実現する為に作成する事が出来ます。
リストの元となる値の事を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にしておきましょう。
ということで今回は少し長くなってしまいましたので次回でいよいよ検索機能を実装していきたいと思います。


