エクセルVBAを使ってリストボックスのリスト未選択時のエラー対処方法
指定したリストの中から選択できるようにリストボックスを使用しますが、リストを選択しないでコマンドボタンをおされてしまい、空欄が入力されてエラーになってしまったことありませんか?
簡単な対処法は、未選択時にはメッセージを表示してVBA作業をストップして、正しくリストから選択してもらうようにVBAコードを付け足せば解決できますよ。
リストボックスのリスト未選択時の対処法
作業の流れとして、リストボックスから選択しないでコマンドボタンが押された時にエラー表示させてから元に戻り、正しく選択したら作業を続けるというように、VBAコードを書き換えれば解決できます。
Ifステートメントの「もし~だったら、そうでなかったら」を使うということになります。
ListIndex = -1でリスト未選択を表す
Ifステートメントを使って、リストボックスが未選択の時は「””」ではありません。
空欄ではなく、未選択なので「””」にしてもエラーは変わりませんし、また「0」でもありません。
「0」はリストボックスでは最初の行を表すので1つ目のリストになるので、「-1」をすることで未選択を表してくれますので、リストボックスのリスト未選択時のVBAコードは下記のようになります。
Private Sub CommandButton1_Click()
If UserForm1.ListBox1.ListIndex = -1 Then
MsgBox “リストが選択されていません”
Else
Range(“A1”).Value = ListBox1.Value
End If
End Sub
- コマンドボタン1がクリックされたら
- ユーザーフォーム1のリストボックス1が未選択だったら
- メッセージで「リストが選択されていません」と表示する
- そうでなかったら(リストが選択されていたら)
- セルA1にリストボックスで選択したリストを記載する
- Ifステートメント終了
- マクロ記録終了
これで、リストが選択されずに誤ってコマンドボタンを押してしまったら、メッセージが表示されて再度選択させるようになり、正しくリストを選択してコマンドボタンを押したら、セルA1に選んだリスト項目が記載されるようになります。
このIfステートメントはエクセルIF関数同様に、非常に多く使用しますのでぜひマスターしてくださいね。
またリストボックスは1つの項目だけリスト化するのではなく、2項目2列表示や選択したリストの一部のみまたは両方をセルに記載することも多くなるので、複数表示設定も覚えておいて損は無いと思いますよ。