リストボックスのリスト未選択時のエラー対処法

LISTBOXエラー回避 リストボックス

指定したリストの中から選んでもらう為にユーザーフォームのリストボックスを使いますが、リスト選択をしないでコマンドボタンを押されてしまってエラー表示になってしまった事ありませんか?

そんなリストボックスのリスト未選択時のままで、コマンドボタンを押してしまった時にメッセージを表示して、正しくリストを選んでもらうように促しましょう。

スポンサーリンク

リストボックスのリスト未選択時のVBAコードを追記

リストボックスのリスト未選択時のVBAコードを追記とタイトルを読むと難しそうに思ますが、もっとわかりやすい日本語にしたら、このようになります。

とりっぷぼうる
とりっぷぼうる

もし、リストボックスのリストを選択しないでコマンドボタンを押してしまったら。

そうです、条件分岐「もし~だったら・・・」のIfステートメントを使います。

ListIndex = -1でリスト未選択を表す

Ifステートメントを使って、リストボックスが未選択の時は「””」ではありません。

空欄ではなく、未選択なので「””」にしてもエラーは変わりませんし、また「0」でもありません。

「0」はリストボックスでは最初の行を表すので1つ目のリストになるので、「-1」をすることで未選択を表してくれますので、リストボックスのリスト未選択時のVBAコードは下記のようになります。

リストボックスのリスト未選択時エラー回避VBAコード

Private Sub CommandButton1_Click()
If UserForm1.ListBox1.ListIndex = -1 Then
MsgBox “リストが選択されていません”
Else
Range(“A1”).Value = ListBox1.Value
End If
End Sub

VBA解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1のリストボックス1が未選択だったら
  3. メッセージで「リストが選択されていません」と表示する
  4. そうでなかったら(リストが選択されていたら)
  5. セルA1にリストボックスで選択したリストを記載する
  6. Ifステートメント終了
  7. マクロ記録終了

これで、リストが選択されずに誤ってコマンドボタンを押してしまったら、メッセージが表示されて再度選択させるようになり、正しくリストを選択してコマンドボタンを押したら、セルA1に選んだリスト項目が記載されるようになります。

このIfステートメントはエクセルIF関数同様に、非常に多く使用しますのでぜひマスターしてくださいね。

またリストボックスは1つの項目だけリスト化するのではなく、2項目2列表示や選択したリストの一部のみまたは両方をセルに記載することも多くなるので、複数表示設定も覚えておいて損は無いと思いますよ。

リストボックス関連