実行ボタンにエラートラップを組み込む
では早速エラートラップを仕掛けましょう。
ユーザーフォームはユーザーが自由に入力が出来る分(入力規則の設定は出来ますがそれは後程)エラーが起きやすいものとなっております。
入力してほしいものが半角の数字だとか文字列だとか意図したもの以外が入力された場合はユーザーに再入力を求めたりしたいものですね。
今回は何でもいいので入力してほしいだけなのでエラートラップは空白だった時だけにしましょう。
という事で早速前回やったのと同じ様に実行ボタンをダブルクリック、もしくは右クリック→コードの表示でCommandButton1のプログラムを記述していきましょう。
この状態になれば実行ボタンのプログラムを書ける状態です。
「何の中身がどうだったら」を考える
今回のケースではTextBoxの中身が空白だったらエラートラップ発動なので、実行ボタンを押した時にTextBoxがどういう状態なのかを見ていきましょう。
TextBoxは一つしか作っていませんのでオブジェクト名はTextBox1になっているはずです。
という事でプログラムを書いてみましょう。
Private Sub CommandButton1_Click() If Me.TextBox1.Text Like "" Then MsgBox "何かしら入力して下さい" Unload Me End If End Sub
ここまで一緒にやって下さった方ならわかると思います。
もしも今操作しているユーザーフォームの中にあるテキストボックス1に何も入力されていなければ、「何かしら入力してください」のメッセージを出してユーザーフォームを閉じる
そういった記述になります。
TextBox1にMeは必ずつけなければいけないというわけではないですが、複数のユーザーフォームを操作する場合もあるかもしれませんので僕は基本的に付けるようにしています。
入力プログラムの記述
ではTextBoxが空欄だった場合のエラートラップが終わりましたので、実行ボタンを押した時の実際の動作を記述していきましょう。
このあたりは今までやった事のおさらいになります。
Private Sub CommandButton1_Click() 'エラートラップ If Me.TextBox1.Text Like "" Then MsgBox "何かしら入力して下さい" Unload Me End If '実際の動作 Cells(1, 1).Value = Me.TextBox1.Text Unload Me MsgBox "A1のセルに" & Me.TextBox1.Text & "を入力しました" End Sub
至って簡単ですね。実行結果はこちら
上手くいきましたね。
ここで気を付けなければいけないのが入力が終わったらユーザーフォームを閉じるのか、それとも開きっぱなしにするのかという事ですね。
今回はA1セルに何かしら入力するだけなので入力が終わったらUnload Meで閉じてしまって問題ありませんが場合によっては連続で入力した方がいい場合があります。
そういったケースの時にはUnload Meは書かずに
Me.TextBox1.Text = ””
とかにして単純にテキストボックスの中を空にすれば良いかと思います。
また、こだわる方はユーザーフォームを閉じるタイミングにも気を付けてみると良いと思います。
例えば、メッセージボックスを出した後にユーザーフォームを閉じるのか、ユーザーフォームを閉じた後にメッセージボックスを出すのか。というようなことですね。
機能は変わりませんが何となくタイミング的にカッコ悪くなる場合があるので気を付けてみるといいかも知れません。
では、ひとまず今回の目的は達しましたがもしかしたらユーザーフォームの操作に困った方もいらっしゃる方もいるかも知れませんので次回はここまでの流れを動画でお届け出来れば。と考えております。