複数のテキストボックスが空欄の時にメッセージを出す方法

テキストボックスコントロールプロパティユーザーフォーム

エクセルでユーザーフォームを使ったオリジナルの入力画面はとても便利で作業時間を大幅に削減してくれるので重宝していると思いますが、自分以外の人に使ってもらうと・・・

ゲスト
ゲスト

エラー表示が出て動かないよ~!

って言われ、予想もしない操作をされたのでエラーになった事ありませんか?

最初の頃はこんなことがトラブルがよく起こりましたので、今では必ず手順通りに進まないとメッセージを出してエラーになる前に動作を止めるようにしています。

エラー防止になる簡単なVBAコードなので、忘れずに入れておきましょう。

スポンサーリンク

コマンドボタンの誤クリックを防ぐ

ユーザーフォームに配置した文字や数字を入力する為のテキストボックス。

一般的にこのテキストボックスに値を入力してからコマンドボタンを押すことによって、セルに転記させたり、動作を行ったりします。

ユーザーフォームを作った本人は当たり前の手順なのですが、他のスタッフなどは誤ってテキストボックスが空欄のままコマンドボタンを押してしまう事があります。

こうなると、動作を行う大前提のテキストボックスの値になにもない状態なのでプログラム上動けなくなってしまい、エラーになりますので下記のように考えましょう。

波乗りアヒル
波乗りアヒル

もし、テキストボックスが空欄時にコマンドボタンを押されたら、メッセージを出して作業を中止する。

正しく入力されていたらVBAコードに書かれている作業を実行する。

1つのテキストボックスが空欄の時

顧客番号を入力するテキストボックスが空欄の時に、「顧客番号が入力されていません」とメッセージを表示させます。

誤クリックしたらメッセージを表示する

Private Sub CommandButton1_Click()
If UserForm1.TextBox1.Value = “” Then
MsgBox (“顧客番号が入力されていません”)
Else
Worksheets(“sheet1”).Range(“A1”).Value = TextBox1.Value
End If
End Sub

VBA解説
  1. コマンドボタン1が押されたら
  2. ユーザーフォーム1のテキストボックス1が空欄の時
  3. 「顧客番号が入力されていません」とメッセージを表示
  4. そうでなかったら(入力されていたら)
  5. ワークシートの【シート1】のセル【A1】にテキストボックス1に入力値を記載する
  6. Ifステートメント終了
  7. マクロ終了

複数のテキストボックスが空欄の時

実際にユーザーフォームで様々なオリジナル入力フォームを使うようになると、2つ以上のテキストボックスが正確に入力されて実行することもよくあります。

例えば、商品名・単価・個数などテキストボックスの数が少なければ、並べてVBAコードを書けば大丈夫です。

複数のテキストボックスが空欄の時にメッセージ表示

Private Sub CommandButton1_Click()
If TextBox1.Value = “” Or TextBox2.Value = “” Or TextBox3.Value = “” Then
MsgBox “商品名・単価・個数が未入力です”
Else
Worksheets(“sheet1”).Range(“A1”).Value = TextBox1.Value
Worksheets(“sheet1”).Range(“B1”).Value = TextBox2.Value
Worksheets(“sheet1”).Range(“C1”).Value = TextBox3.Value
End If
End Sub

VBA解説
  1. コマンドボタン1が押されたら
  2. もし、テキストボックス1が空欄、またはテキストボックス2が空欄、またはテキストボックス3が空欄だった時
  3. 「商品名・単価・個数が未入力です」とメッセージを出す
  4. そうでない場合
  5. ワークシートの【シート1】のセル【A1】にテキストボックス1に入力値を記載する
  6. ワークシートの【シート1】のセル【B1】にテキストボックス2に入力値を記載する
  7. ワークシートの【シート1】のセル【C2】にテキストボックス3に入力値を記載する
  8. IFステートメントの終了

こうすると3つのTextBoxのうち、ひとつでも空欄があればメッセージが表示され、すべて入力していれば、TextBox1の文字はA1へTextBox2の文字はB1へTextBox3の文字はC1へそれぞれ転記されます。

波乗りアヒル
波乗りアヒル

テキストボックスの数が3個ぐらいならいいけど10個もあったら、大変なので変数を使って省略することもできますよ!

変数を使ってVBAコード省略

Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 10
If Controls(“TextBox” & i).Value = “” Then
MsgBox “テキストボックス” & i & ” 入力されていません!”
Exit Sub
End If
Next i
End Sub

VBA解説
  1. コマンドボタン1が押されたら
  2. 整数型の変数iを宣言する
  3. 変数iは1~10
  4. もしテキストボックスiが空欄だったら
  5. 「テキストボックスiが入力されていません!」と表示する
  6. 処理の終了
  7. Ifステートメント終了
  8. くり返す
  9. マクロ終了

こういう方法もありますよ!変数といってもそんなに難しくないので挑戦してね。

これを応用してメッセージ表示で「はい」「いいえ」を選べるようにもできるんですよ。

印刷実行ボタンを作った時に「印刷しますか?」と表示して選べるので便利ですよね

タイトルとURLをコピーしました