エクセルでユーザーフォームを使ったオリジナルの入力画面はとても便利で作業時間を大幅に削減してくれるので重宝していると思いますが、自分以外の人に使ってもらうと・・・
ゲスト
って言われ、予想もしない操作をされたのでエラーになった事ありませんか?
最初の頃はこんなことがトラブルがよく起こりましたので、今では必ず手順通りに進まないとメッセージを出してエラーになる前に動作を止めるようにしています。
エラー防止になる簡単な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のテキストボックス1が空欄の時
「顧客番号が入力されていません」とメッセージを表示
そうでなかったら(入力されていたら)
ワークシートの【シート1】のセル【A1】にテキストボックス1に入力値を記載する
Ifステートメント終了
マクロ終了
複数のテキストボックスが空欄の時
実際にユーザーフォームで様々なオリジナル入力フォームを使うようになると、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が空欄、またはテキストボックス3が空欄だった時
「商品名・単価・個数が未入力です」とメッセージを出す
そうでない場合
ワークシートの【シート1】のセル【A1】にテキストボックス1に入力値を記載する
ワークシートの【シート1】のセル【B1】にテキストボックス2に入力値を記載する
ワークシートの【シート1】のセル【C2】にテキストボックス3に入力値を記載する
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が押されたら
整数型の変数iを宣言する
変数iは1~10
もしテキストボックスiが空欄だったら
「テキストボックスiが入力されていません!」と表示する
処理の終了
Ifステートメント終了
くり返す
マクロ終了
こういう方法もありますよ!変数といってもそんなに難しくないので挑戦してね。
これを応用してメッセージ表示で「はい」「いいえ」を選べるようにもできるんですよ。
印刷実行ボタンを作った時に「印刷しますか?」と表示して選べるので便利ですよね
あわせて読みたい
メッセージボックスではいといいえを選択させる方法
〇○しますか?と聞いて「はい」「いいえ」で処理を振り分けたいことありませんか? 通常のVBAのメッセージ(MsgBox)ではOKしかないのですが、はいといいえを表示させて...
波乗りアヒル
ユーザーフォームでオリジナルフォーム作ろう
エクセルの作業時間を短縮して効率よく作業を可能にする「ユーザーフォーム」を使いこなすには、基本を押さえておきましょう。
1日400人ぐらいの方が見ていただいている意外と人気ページなんです。
あわせて読みたい
ユーザーフォームでオリジナル入力画面を作る
エクセルのデータ入力・検索・修正作業ってとても面倒で時間と手間がかかりませんか? この作業を簡単に素早く終わらせたくないですか? エクセル使うなら今話題の時短...
文字を入力するのに絶対使うTextBox
ユーザーフォームにテキストボックスを使わないで済むのは、確認画面ぐらいかな?
テキストボックスとセルをリンクさせる様々な方法を組み合わせれば、作業時間はあっという間に短縮できます。
あわせて読みたい
テキストボックス使い方や便利な活用法やワザ
エクセルのオリジナル入力フォームが作ることができるユーザーフォーム。 そこでコマンドボタン・ラベルと並んで使用頻度が高いテキストボックスの基本的な使い方と、活...
文字列だけじゃない!Labelもクリックできるので可能性大
ラベルといえばテキストボックスの説明として文字列で表示させるのが、基本の使い方ですがクリックするとプログラムを実行させることもできるのです。
工夫次第でできることは無限大に広がります。
あわせて読みたい
ラベル使い方や便利な活用法やワザ
エクセルのオリジナル入力フォームが作ることができるユーザーフォーム。 そこでコマンドボタン・ラベルと並んで使用頻度が高いテキストボックスの基本的な使い方と、活...
どんなVBAコードをコマンドボタンに記述しますか?
ボタンをクリックすると記述したプログラムが作動して、繰り返し作業や手間がかかったことが一瞬で完了させることができます。
あんなこともこんなこともできちゃいますよ。
あわせて読みたい
コマンドボタンの使い方や便利な活用法やワザ
エクセルのオリジナル入力フォームが作ることができるユーザーフォーム。 そこでテキストボックス・ラベルと並んで使用頻度が高いコマンドボタンの基本的な使い方と、活...
波乗りアヒル
ご覧いただきありがとうございます。
ブログランキングに登録しています。
少しでもお役に立てれば幸いで、参考になったようでしたら応援よろしくお願いします。
Microsoft Officeランキング
ユーザーフォームを使えばこんなに便利に早く作業が終わりますよ
あわせて読みたい
エクセルVBAで住所録入力フォームを作る方法
数百人規模の中規模の住所録や顧客データをエクセルで管理している事業所って意外と多いですが、データを検索して修正するのってすごく面倒じゃないですか? 面倒だなあ...
あわせて読みたい
ユーザーフォームでオリジナル入力画面を作る
エクセルのデータ入力・検索・修正作業ってとても面倒で時間と手間がかかりませんか? この作業を簡単に素早く終わらせたくないですか? エクセル使うなら今話題の時短...
波乗りアヒル
エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?