【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!


ユーザーフォーム,コマンドボタン,アイキャッチ

皆様こんにちは、ノグチです。

前回記事から、ユーザーフォームを作る方法をご紹介しています。

ユーザーフォームは、何となく難しそう、敷居が高そう、と思ってしまうかもしれませんが、順を追っていけば特別難しいことはありません。

今回は、前回作成したユーザーフォームにいくつかコントロールを追加して、ワークシートから開く方法をご紹介します。

ユーザーフォームにコントロールを追加する

前回のユーザーフォームがこちら。

ユーザーフォーム,前回

フォームのタイトルと背景を、「Caption」プロパティと「BackColor」プロパティで変えたのでしたね。

では、このフォームにコントロールを追加してみましょう!

コントロールはを追加するには、VBEでユーザーフォームを表示した時に画面上に現れる、ツールボックスから追加したいコントロールをクリックします。

テキストボックスを追加したい場合は、ツールボックスの中からテキストボックスのアイコンをクリックして…

ツールボックス、テキストボックス

フォーム上でドラッグすると…

テキストボックス追加

この通り、コントロールが追加できます。

同じ要領で、ラベルや、コマンドボタンも追加してみましょう。

出来上がったユーザーフォームがこちら。

ユーザーフォーム,コントロール追加

ツールボックスが表示されていない!

「VBEでユーザーフォームが表示されているのに、ツールボックスが画面上に無い!」という場合でも慌てることなかれ。

メニューの「表示」をクリックして、表示されるメニューの中から「ツールボックス」をクリックすれば、画面上に現れますよ。

ツールボックス表示

Captionプロパティでテキストを変更する

テキストボックスや、コマンドボタンも、ユーザーフォームと同じように、「Caption」プロパティ画面上に表示されるテキストを変更することができます。

例えば、ラベル。

フォーム上に配置した直後は、「Label1」と表示されていますよね。

これを、好きな文字列に変えることができます。

プロパティシートの「Caption」プロパティの値を、変えると…

ラベル,caption

この通り、ラベルのテキストも変わりますね。

同じ要領で、残りのラベルやコマンドボタンも同様に、テキストを変えてみましょう。

こんな感じのフォームができました。

ユーザーフォーム,完成

ワークシートからユーザーフォームを開く

さあ、ここまででユーザーフォームができました。

まだVBAのコードを追加していないのでガワの状態とも言えますが、作ったユーザーフォームをワークシートから開いてみましょう

UserFormオブジェクトを取得する

ユーザーフォームは、UserFormオブジェクトを取得することで操作ができます。

UserFormオブジェクトは、ユーザーフォームのオブジェクト名をコード上で指定することで取得できますよ。

例えば、こちらのユーザーフォームのオブジェクトを取得するなら、こんな風に記述できます。

Nameプロパティでオブジェクトを名を取得してみる

試しに、UserFormオブジェクトのNameプロパティを使って、コード内にユーザーフォームのオブジェクト名を記述することで、ユーザーフォームのオブジェクト名が取得できるのか(ユーザーフォームが操作できるのか)を、試してみましょう。
コードはこちらです。

これを実行すると…

Userformオブジェクト,Nameプロパティ

この通り、ユーザーフォームの名前が取得できているので、オブジェクトを取得できているということですね。

Showメソッドでユーザーフォームを開く

では、ユーザーフォームのオブジェクトが取得できたところで、いよいよワークシートからユーザーフォームを呼び出してみましょう。

ユーザーフォームを開くには、UserFormオブジェクトのShowメソッドを使います。

記述方法はとてもシンプル。

UserFormオブジェクト.Show

このメソッドで、上で作成したユーザーフォームを開いてみます。

コードはこちら。

このコードを実行すると…

ユーザーフォーム,開く

この通り、ユーザーフォームを開くことができました!

ワークシートからユーザーフォームを呼び出す

では、ワークシートからもユーザーフォームを呼び出してみましょう。

ワークシートからユーザーフォームを呼び出すには、例えばこのような方法があります。

  • ワークシート上のコマンドボタンクリックで呼び出す
  • ワークシートイベントで呼び出す
  • ワークブックのイベントで呼び出す

先ほどのShowメソッドを含むプロシージャが実行されればよいので、ユーザーフォームの使い方によって、呼び出し方を選択すればよいでしょう。

今回はワークシート上にコマンドボタンを配置して、ボタンをクリックしたら呼び出す、という方法を試してみましょう。

ワークシートにコマンドボタンを配置して、「マクロの登録」で、Showメソッドを含むプロシージャをセットして…ワークシート,コマンドボタン配置

コマンドボタンをクリックすると…

コマンドボタン,ユーザーフォーム

この通り、ワークシートからユーザーフォームを呼び出すことができました!

ちなみに、コマンドボタンの挿入方法と、マクロの登録方法については、下記記事で紹介されていますので、併せてご覧くださいね。

エクセルVBAのボタン設置で引数を渡してマクロを呼び出す方法
エクセルVBAでプログラムを動かす際にボタンを設置しますよね。今回はボタンに登録したVBAマクロを引数を渡しながら実行する方法についてお伝えします。また、引数の記述方法や省略の仕方についても触れます。

最後に

今回は、ユーザーフォームにコントロールを追加する方法と、ワークシートのコマンドボタンからユーザーフォームを開く方法をご紹介しました。

自分が作ったユーザーフォームが動くと、嬉しくなりますよね。

次回は、今回フォームに追加したコントロールのイベントを使って、ユーザーフォームを動かしていきますよ。

それでは、最後までお読みいただきありがとうございました!

連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!

ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。

何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。

  1. 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
  2. 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
  3. 【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法

タイトルとURLをコピーしました