ユーザーフォームが表示されると自動的にセルの値がテキストボックスに表示される方法
オリジナル入力画面を作ることができるユーザーフォーム。
カレンダーや住所録を作った時に今日の日付が、自動的にユーザーフォームに表示されたら便利だと思いませんか?
この技を習得するまでは、1個コマンドボタンを余分に配置して【表示】という名前のコマンドボタンを押して、今日の日付をユーザーフォームに表示していました。
または、エクセルファイルが開いた時に特定のユーザーフォームを自動的に表示するThisWorkbookにVBAコードを書き込んで、今日の日付を表示させることしか方法を知りませんでした。
おじさんには、たまたま見つけることができた技ですが、エクセルの知識が豊富な方には当たり前の機能かもしれませんね。
スポンサーリンク
ユーザーフォーム表示直前の動作設定
ユーザーフォームが表示される直前に作業させることができる、InitializeというVBAコードがあります。
このInitializeをユーザーフォーム自体に組み込むことによって、指定した作業を行ってからユーザーフォームが表示されてくれるので、テキストボックスが本来は空欄なのですがしっかりと指示したセルから値を拾ってテキストボックスに表示されました。
実際にユーザーフォーム自体にこのようなVBAコードを書いてあります。
TextBox1.Text = Range(“A1”).Value
TextBox2.Text = Range(“B1”).Value
End Sub
- ユーザーフォームを表示する直前に実行する
- テキストボックス1の値はセルA1の値にする
- テキストボックス2の値はセルB1の値にする
- マクロ終了
とてもシンプルで簡単なので今後も使わせてもらいます。
ただし、VBAコードを書く場所がちょっと違うので今まで気づきませんでした。
Initializeを書く場所
気づかなかったのは普通だと思います。
なぜなら、普段通りにユーザーフォームをクリックしても無駄だからで、こんな感じになりますよね。
Private Sub UserForm_Click()
End Sub
これではダメなので、まずはこの表示を消しちゃいましょう。
そして、消したら下記画像のようになりますよね。
次に(General)の右側のプルダウンを押すとUserFormが出てくるので、選択します。
すると、また出てきた!
Private Sub UserForm_Click()
End Sub
とりあえず無視して、次に右側の(Declarations)も同じように右側のプルダウンを押してInitializeを選択します。
するとこんな感じになります。
必要のない邪魔なこの子たちを消しちゃいます。
Private Sub UserForm_Click()
End Sub
多分、ClickをInitializeと書き換えればいいのかもしれませんが、まだ試していないのでやってみたことをそのまま書いています。
あとは、最初に書いた通りユーザーフォームが表示される直前に行ってほしいVBAコードを書けば完成です。
ユーザーフォームでオリジナルフォーム作ろう
エクセルの作業時間を短縮して効率よく作業を可能にする「ユーザーフォーム」を使いこなすには、基本を押さえておきましょう。
1日400人ぐらいの方が見ていただいている意外と人気ページなんです。
文字を入力するのに絶対使うTextBox
ユーザーフォームにテキストボックスを使わないで済むのは、確認画面ぐらいかな?
テキストボックスとセルをリンクさせる様々な方法を組み合わせれば、作業時間はあっという間に短縮できます。
文字列だけじゃない!Labelもクリックできるので可能性大
ラベルといえばテキストボックスの説明として文字列で表示させるのが、基本の使い方ですがクリックするとプログラムを実行させることもできるのです。
工夫次第でできることは無限大に広がります。
どんなVBAコードをコマンドボタンに記述しますか?
ボタンをクリックすると記述したプログラムが作動して、繰り返し作業や手間がかかったことが一瞬で完了させることができます。
あんなこともこんなこともできちゃいますよ。
ご覧いただきありがとうございます。
ブログランキングに登録しています。
少しでもお役に立てれば幸いで、参考になったようでしたら応援よろしくお願いします。
エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?