エクセルVBAのユーザーフォームを使っていると、文字入力をするためのテキストボックスを配置することが多くなると思います。
波乗りアヒル
作業効率化の為に入力する場所を決めているので必需品パーツですよね。
ところが、意図しないエラーが発生します!
それは、VBAを使ってエクセルを作成した私自身が使うならば、問題はないのですが、その他の人に使ってもらった時に、トラブルがあったので分かったことなのです。
入力必須のテキストボックスに入力せずにコマンドボタンを押してしまったのです。
住所録など作成する時用にカレンダーを作ったのですが、「年」「月」をそれぞれのテキストボックスに入力して【表示】ボタンを押すと、該当月のカレンダーが表示されるのですが、どちらか一方を空欄のまま【表示】ボタンを押したために、カレンダー表示がエラーになってしまいました。
波乗りアヒル
まさか「年」「月」入れ忘れるなんて想定外!
空欄の時は操作できないようにしたいし、メッセージを出してお知らせもしたい方法ってないものかって、思いませんか?
目次
IFステートメントとメッセージ機能を組み合わせる
難しく考えず、単純なのです。
もしテキストボックスが空欄だったらメッセージを表示する、そうでなかったら(入力されていたら)処理を続けるってことをVBAコードで書けば解決しますよ。
Private Sub CommandButton1_Click()
If TextBox1.Value = “” Or TextBox2.Value = “” Then
MsgBox “年・月を入力してください”
Else
Range(“A2”).Value = TextBox1.Text
Range(“B2”).Value = TextBox2.Text
End If
以下続ける処理を書きます(ここでは省略します)
End Sub
If TextBox1.Value = “” Or TextBox2.Value = “” Then
MsgBox “年・月を入力してください”
Else
Range(“A2”).Value = TextBox1.Text
Range(“B2”).Value = TextBox2.Text
End If
以下続ける処理を書きます(ここでは省略します)
End Sub
- コマンドボタン1が押されたら
- もしテキストボックス1が空欄、またはテキストボックス2が空欄だったら
- メッセージ表示で「年・月を入力してください」
- そうでなかったら
- セルA2の値はテキストボックス1の値を転記する
- セルB2の値はテキストボックス2の値を転記する
- IFステートメント終了
- 省略した処理をする
- マクロ終了
このようになります。
ポイントはテキストボックスが空欄の時を””とすることです。
エクセルIF関数でも””使いますよね、一緒で。
そして2つのテキストボックスどちらかが空欄でも困るので、Orで繋いでいます。
たった、これだけなのです。

波乗りアヒル
Excel-VBAを使えば数分かかる作業がたったの1秒で終了しますよ!