皆様こんにちは、ノグチです。
ユーザーフォームを作って使ってみるまでを目標に、コントロールのプロパティやイベントを、連載記事でご紹介しています。
前回は、テキストボックスのイベントをいくつかご紹介しました。
今回は、ユーザーフォームのInitializeイベントで、ユーザーフォームを開くと同時に、ワークシート上の値をユーザーフォームのテキストボックスに表示する方法をご紹介します!
前回までのおさらい
まず、前回までに作成したユーザーフォームがこちら。
「品目」というラベルの下にある、TextItemというオブジェクト名のテキストボックスを用いて、テキストボックスのプロパティやイベントをご紹介してきたのでした。
今回も、こちらのテキストボックス「TextItem」を使っていきますよ。
ワークシートの値をユーザーフォームに表示する
Valueプロパティに値をセットする
まず、ユーザーフォームのテキストボックスに値を表示するには、テキストボックス のValueプロパティに表示したい値をセットします。
テキストボックスにワークシートの値を表示したいのなら、テキストボックスのValueプロパティに、ワークシートのCellオブジェクトまたはRangeオブジェクトのValueプロパティをセットすることになりますね。
例えば、TextItemというオブジェクト名のテキストボックスに、ワークシートのA1セルの値をセットしたいなら、こんなコードになります。
TextItem.Value = ActiveSheet.Cells(1, 1).Value
これを、テキストボックスのEnterイベントに入れて、動かしてみましょう。
Private Sub TextItem_Enter() TextItem.Value = ActiveSheet.Cells(1, 1).Value End Sub
ユーザーフォームを開いて、テキストボックスにフォーカスを当ててみると…
この通り、ワークシートの指定したセルから値をもってきて、ユーザーフォーム上のテキストボックスに表示してくれていますね。
ユーザーフォームの値をワークシートに転記する
ユーザーフォームで入力した値を、ワークシートに転記することもできますよ。
上でご紹介したのと逆で、ワークシートのCellオブジェクト、RangeオブジェクトのValueプロパティに、コントロールのValueプロパティをセットすればよいのです。
試しに、テキストボックスのExitイベントを使って、ワークシートに値を転記してみましょう。
こんなコードができます。
Private Sub TextItem_Exit(ByVal Cancel As MSForms.ReturnBoolean) ActiveSheet.Cells(1, 1).Value = TextItem.Value End Sub
ユーザーフォームのテキストボックスに値を入力して、フォーカスをテキストボックスから離すと…
この通り、ユーザーフォームの背後で、テキストボックスに入力した値が、ワークシートに転記されていますね。
Initalizeイベントでワークシートの値をユーザーフォームの初期値にセットする
Initializeイベント:ユーザーフォームが開くタイミングで実行される
ユーザーフォームで画面を作っていると、マスタやワークシートの値など、ユーザーフォームを開くと同時に読み込んでおいて、フォーム上のコントロールに初期値として表示したい、という場面が出てくることがあります。
そんな時に使えるのが、ユーザーフォームのInitializeイベントです。
このイベントは、ユーザーフォームが開くタイミングで実行されるイベントなので、例えば、
- ユーザーフォーム上の背景やコントロールの色やサイズなどを初期値用に変更する
- マスタやワークシートの値をユーザーフォーム上に表示する
といった、初期化処理をしたい場合はこちらのイベントプロシージャに処理を書き込むことになります。
Initalizeイベントでワークシートの値をユーザーフォームの初期値にセットする
では早速、Initializeイベントを使って、ユーザーフォームを開いたときに、ワークシートの値をユーザーフォーム上のテキストボックスに初期値としてセットしてみましょう。
コードはこちら。
Private Sub UserForm_Initialize() TextItem.Value = ActiveSheet.cells(1, 1).Value End Sub
ユーザーフォームを開いたとき、ワークシート上のA1セルの値を、ユーザーフォームのTextItemというオブジェクト名のテキストボックスに転記する、というコードです。
ワークシートのA1セルに値を入力しておいて…
ユーザーフォームを開いてみると…
この通り、ワークシートの値が初期値としてテキストボックスに表示されていますね。
最後に
今回は、テキストボックスに入力した値をワークシートに転記する方法と、ユーザーフォームのInitializeイベントで、ワークシート上の値をユーザーフォームの初期値にセットする方法をご紹介しました。
このイベントは、ユーザーフォームでツールを作る場合、マスタシートの読み込みなどで何かと使うことになるイベントですので、是非使ってみてくださいね。
それでは、最後までお読み頂きありがとうございました!
連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!
ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。
何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。
- 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
- 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
- 【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法
- 【エクセルVBA】テキストボックスのプロパティで入力を便利にしよう
- 【エクセルVBA】テキストボックスでよく使う3つのイベントを使ってみよう
- 【エクセルVBA】Initializeイベントでワークシートの値をユーザーフォームの初期値にセットする
- 【エクセルVBA】AfterUpdateイベントでテキストボックス同士を連動させてみよう
- 【エクセルVBA】コマンドボタンのClickイベントでワークシートを更新してみよう
- 【エクセルVBA】ユーザーフォームのリストボックスを使ってみよう!
- 【エクセルVBA】リストボックスのRowSourceプロパティの値を変動させてみよう!
- 【エクセルVBA】AddItemメソッドでリストボックスに値を追加してみよう!
- 【エクセルVBA】リストボックスのListプロパティで複数列の値を更新する
- 【エクセルVBA】ユーザーフォームにコンボボックスを追加する方法
- 【エクセルVBA】コンボボックスに値をセットする2つの方法 RowSourceプロパティとAddItemメソッド