ユーザーフォームが表示されると自動的にセルの値がテキストボックスに表示される方法

Excel-VBA ユーザーフォーム

スポンサーリンク


オリジナル入力画面を作ることができるユーザーフォーム。

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

カレンダーや住所録を作った時に今日の日付が、自動的にユーザーフォームに表示されたら便利だと思いませんか?

この技を習得するまでは、1個コマンドボタンを余分に配置して【表示】という名前のコマンドボタンを押して、今日の日付をユーザーフォームに表示していました。

または、エクセルファイルが開いた時に特定のユーザーフォームを自動的に表示するThisWorkbookにVBAコードを書き込んで、今日の日付を表示させることしか方法を知りませんでした。

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

おじさんには、たまたま見つけることができた技ですが、エクセルの知識が豊富な方には当たり前の機能かもしれませんね。

スポンサーリンク


スポンサーリンク

ユーザーフォーム表示直前の動作設定

ユーザーフォームが表示される直前に作業させることができる、InitializeというVBAコードがあります。

このInitializeをユーザーフォーム自体に組み込むことによって、指定した作業を行ってからユーザーフォームが表示されてくれるので、テキストボックスが本来は空欄なのですがしっかりと指示したセルから値を拾ってテキストボックスに表示されました。

実際にユーザーフォーム自体にこのようなVBAコードを書いてあります。

Private Sub UserForm_Initialize()
TextBox1.Text = Range(“A1”).Value
TextBox2.Text = Range(“B1”).Value
End Sub
  1. ユーザーフォームを表示する直前に実行する
  2. テキストボックス1の値はセルA1の値にする
  3. テキストボックス2の値はセルB1の値にする
  4. マクロ終了
波乗りアヒル
波乗りアヒル

とてもシンプルで簡単なので今後も使わせてもらいます。

ただし、VBAコードを書く場所がちょっと違うので今まで気づきませんでした。

Initializeを書く場所

気づかなかったのは普通だと思います。

なぜなら、普段通りにユーザーフォームをクリックしても無駄だからで、こんな感じになりますよね。

Private Sub UserForm_Click()

End Sub

これではダメなので、まずはこの表示を消しちゃいましょう。

そして、消したら下記画像のようになりますよね。

INITIALIZE

次に(General)の右側のプルダウンを押すとUserFormが出てくるので、選択します。

INITIALIZE1

すると、また出てきた!

Private Sub UserForm_Click()

End Sub

とりあえず無視して、次に右側の(Declarations)も同じように右側のプルダウンを押してInitializeを選択します。

INITIALIZE2

するとこんな感じになります。

INITIALIZE3

必要のない邪魔なこの子たちを消しちゃいます。

Private Sub UserForm_Click()

End Sub

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

多分、ClickをInitializeと書き換えればいいのかもしれませんが、まだ試していないのでやってみたことをそのまま書いています。

あとは、最初に書いた通りユーザーフォームが表示される直前に行ってほしいVBAコードを書けば完成です。

各コントロールまとめて転記シリーズ

ユーザーフォームを使うと配置したコントロール(テキストボックスやラベルなど)とセルとの間で値のやり取りが多くなります。

よく使うのでまとめてみました。

値の場所転記したい場所説明ページ
セルの値ラベル名VBAコード
セルの値テキストボックスの値VBAコード
セルの値コマンドボタンの表示名VBAコード
セルの値セルの値VBAコード
テキストボックス入力値セルの値VBAコード
波乗りアヒル
波乗りアヒル

成績表作成には知っておきたいExcel-VBAもくじ

ボウリングハンデキャップのつけ方
HDCPの種類はリーグのルールにより複雑に ボウリングの成績表(リーグ戦)で必ず必要になるのが、ハンデキャップ(HDCP)です。 ボウリングご予約の時に一番多く使われているのが、女性にだけハンデキャップをつけてあげることが多いですね。 だいだい何点ぐらいのハンデキャップが多いの?
ボウリングリーグ対戦表の数字を名前に自動変換する方法
リーグ戦の対戦表をエクセルで作る時、数字で表されている番号を名前に自動的に変換できると作業時間が短くなり効率的ですね。たった2つのエクセル関数を使うだけで、簡単にできるんです。今回の回戦数を入力するだけで一発変換完了。もちろんお客様にスケジュール対戦表として渡すことも簡単ですよ。
人数に応じてリーグ対戦表を自動選択する方法
複数の表があり、条件に合った表を選んで、さらにセルの値を選んで数字を名前に自動変換できると、とても便利なエクセルができますよね。ボウリングのリーグ対戦表も人数により表が異なるので、参加人数が決まったら、自動的に表を選んで対戦番号がこれも自動的に参加者名に変換されると便利で作業効率がアップして時間短縮になりますよ。
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?