皆様こんにちは、ノグチです。
前回記事から、ユーザーフォームを作る方法をご紹介しています。
ユーザーフォームは、何となく難しそう、敷居が高そう、と思ってしまうかもしれませんが、順を追っていけば特別難しいことはありません。
今回は、前回作成したユーザーフォームにいくつかコントロールを追加して、ワークシートから開く方法をご紹介します。
ユーザーフォームにコントロールを追加する
前回のユーザーフォームがこちら。
フォームのタイトルと背景を、「Caption」プロパティと「BackColor」プロパティで変えたのでしたね。
では、このフォームにコントロールを追加してみましょう!
コントロールはを追加するには、VBEでユーザーフォームを表示した時に画面上に現れる、ツールボックスから追加したいコントロールをクリックします。
テキストボックスを追加したい場合は、ツールボックスの中からテキストボックスのアイコンをクリックして…
フォーム上でドラッグすると…
この通り、コントロールが追加できます。
同じ要領で、ラベルや、コマンドボタンも追加してみましょう。
出来上がったユーザーフォームがこちら。
ツールボックスが表示されていない!
「VBEでユーザーフォームが表示されているのに、ツールボックスが画面上に無い!」という場合でも慌てることなかれ。
メニューの「表示」をクリックして、表示されるメニューの中から「ツールボックス」をクリックすれば、画面上に現れますよ。
Captionプロパティでテキストを変更する
テキストボックスや、コマンドボタンも、ユーザーフォームと同じように、「Caption」プロパティで画面上に表示されるテキストを変更することができます。
例えば、ラベル。
フォーム上に配置した直後は、「Label1」と表示されていますよね。
これを、好きな文字列に変えることができます。
プロパティシートの「Caption」プロパティの値を、変えると…
この通り、ラベルのテキストも変わりますね。
同じ要領で、残りのラベルやコマンドボタンも同様に、テキストを変えてみましょう。
こんな感じのフォームができました。
ワークシートからユーザーフォームを開く
さあ、ここまででユーザーフォームができました。
まだVBAのコードを追加していないのでガワの状態とも言えますが、作ったユーザーフォームをワークシートから開いてみましょう。
UserFormオブジェクトを取得する
ユーザーフォームは、UserFormオブジェクトを取得することで操作ができます。
UserFormオブジェクトは、ユーザーフォームのオブジェクト名をコード上で指定することで取得できますよ。
例えば、こちらのユーザーフォームのオブジェクトを取得するなら、こんな風に記述できます。
MyForm.プロパティまたはメソッド
Nameプロパティでオブジェクトを名を取得してみる
試しに、UserFormオブジェクトのNameプロパティを使って、コード内にユーザーフォームのオブジェクト名を記述することで、ユーザーフォームのオブジェクト名が取得できるのか(ユーザーフォームが操作できるのか)を、試してみましょう。
コードはこちらです。
Sub Get_Userform_Name() MsgBox MyForm.Name End Sub
これを実行すると…
この通り、ユーザーフォームの名前が取得できているので、オブジェクトを取得できているということですね。
Showメソッドでユーザーフォームを開く
では、ユーザーフォームのオブジェクトが取得できたところで、いよいよワークシートからユーザーフォームを呼び出してみましょう。
ユーザーフォームを開くには、UserFormオブジェクトのShowメソッドを使います。
記述方法はとてもシンプル。
このメソッドで、上で作成したユーザーフォームを開いてみます。
コードはこちら。
Sub Open_Myform() MyForm.Show End Sub
このコードを実行すると…
この通り、ユーザーフォームを開くことができました!
ワークシートからユーザーフォームを呼び出す
では、ワークシートからもユーザーフォームを呼び出してみましょう。
ワークシートからユーザーフォームを呼び出すには、例えばこのような方法があります。
- ワークシート上のコマンドボタンクリックで呼び出す
- ワークシートイベントで呼び出す
- ワークブックのイベントで呼び出す
先ほどのShowメソッドを含むプロシージャが実行されればよいので、ユーザーフォームの使い方によって、呼び出し方を選択すればよいでしょう。
今回はワークシート上にコマンドボタンを配置して、ボタンをクリックしたら呼び出す、という方法を試してみましょう。
ワークシートにコマンドボタンを配置して、「マクロの登録」で、Showメソッドを含むプロシージャをセットして…
コマンドボタンをクリックすると…
この通り、ワークシートからユーザーフォームを呼び出すことができました!
ちなみに、コマンドボタンの挿入方法と、マクロの登録方法については、下記記事で紹介されていますので、併せてご覧くださいね。
最後に
今回は、ユーザーフォームにコントロールを追加する方法と、ワークシートのコマンドボタンからユーザーフォームを開く方法をご紹介しました。
自分が作ったユーザーフォームが動くと、嬉しくなりますよね。
次回は、今回フォームに追加したコントロールのイベントを使って、ユーザーフォームを動かしていきますよ。
それでは、最後までお読みいただきありがとうございました!
連載目次:【エクセル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メソッド