【ExcelVBA入門】ユーザーフォームで画面を新しく作る方法とは?




こんにちは、ネコ好きフリーランスエンジニアのシロ(@siro3460)です。

皆さんは、Excelでアプリのような画面を作ったことがありますか?

Excelで画面を作るためには、VBAでユーザーフォームを作る必要があります!

ユーザーフォームが作れるようになると次のようなツールを作ることができるようになります。

  • 入力ミスをなくすためのデータ入力ツール
  • 高度な検索機能を持った独自検索ツール
  • ピポットテーブルよりも高度なデータ分析ツール
  • 勤怠システムや経理システムなどの小・中規模システム

そこで今回から、ユーザーフォームを使って簡単なアプリを作るシリーズと題して、基礎知識や作り方などを徹底的に解説していきます!

今回は第1弾として、ユーザーフォームを新しく挿入・実行・削除する方法について説明します!

ユーザーフォームの基礎の基礎ですので、これからExcelのユーザーフォームを使ってツールを作ってみたい人におすすめです!

ユーザーフォームとは?

ユーザーフォームとは、Excelで画面を作るための仕組みです。

次のような画面を作ることができます。

画像の例では簡単なTODOリストを登録する画面を作っていますが、このようにExcelでアプリやツールを作るための画面を作ることができます。

Excelで画面を使ったアプリやツールを作りたい場合はユーザーフォームを使う」と覚えておけばOKです!

新しくユーザーフォームを作る方法

それでは、具体的な作成方法をご紹介します。

ユーザーフォーム挿入方法

1. Alt + F11キーでVBEを開く

2. プロジェクトエクスプローラで右クリックを → 挿入 → ユーザーフォームを選択

作成すると、新しいユーザーフォームの画面と一緒に画面の横に「ツールボックス」が表示されます。

ツールボックスは画面にテキストボックスやボタンなどを置くためのコントロールをまとめたウィンドウです。

ここから選択してから画面をクリックすると、コントロールを画面に置くことができます。

コントロールの詳細な使い方は次回説明しますので、今の段階では「ツールボックスからテキストボックスやボタンなどを置くことができるんだなー」程度に覚えておけば大丈夫です。

ユーザーフォームの名前を変える方法

初期状態ではUserForm1のように「UserForm + 連番」でフォームが作成されます。

画面が1つの場合はこのままでもいいのですが、複数画面を使うような小・中規模システムを作る場合は画面が複数ある場合があります。

実際には以下のような画面を用意していたとしても、UserFormの名前だけではどのフォームが何の画面か判断しにくいですよね。

UserForm1:登録画面
UserForm2:検索画面
UserForm3:月次処理画面
UserForm4:マスタデータ管理画面

そのため、画面名を付ける癖をつけておくのがおすすめです。

プロパティのオブジェクト名を変えると、ユーザーフォームの名前を変えることができます。

手順は次の通りです。

1. ユーザーフォームをクリック

2. プロパティウィンドウに表示されているオブジェクト名を変更

今回はユーザーフォーム名を「Regist_Frm」にしました。

「Regist」で登録画面を表しており、「_Frm」を末尾に着けることでユーザーフォームであることを一目でわかるようにしています。

画面で見るだけでなくVBAを書くときにもこの名前は使うので、わかりやすく設定しておくことがおすすめです。

ちなみに、プロパティウィンドウが表示されていない場合は、「表示タブ → プロパティウィンドウ」を選択することで表示することができます。

ユーザーフォームのプロパティにはいろいろ変更できる項目がありますが、量が多いので最初は「オブジェクト名変更でユーザーフォームの名称が変更できること」だけ覚えておいてください。

画面を起動する方法

次に、作成した画面を起動する方法を説明します。

起動する方法は次の3パターンです。

実行ボタンを押して起動する

実行ボタン()をクリックすることで、画面を起動することができます。

まだ何もコントロールを置いていないため、殺風景な画面が起動するだけですが、テキストボックス、リストボックス、ボタンなどを置いていくと画面を起動したときに入力したり、クリックしたりすることができるようになります。

F5キーを押して起動する

実行ボタンにはショートカットキーがあります。

F5キーを押すことで画面を実行することができます。

慣れるとこれが一番速いですね。

VBAでソースコードを書いて起動する

VBAのソースから画面を起動することもできます。

次のようなコードを実行することで、ユーザーフォームを起動することができます。

VBAからユーザーフォームを起動するときの処理

Sub 登録フォーム表示ボタンクリック処理()

   'ユーザーフォームを表示
   Regist_Frm.Show

End Sub

ユーザーフォームのオブジェクト名.Show」で画面を起動することができます。

Excelのシートに置いたボタンから画面を起動したい場合」など、VBAから画面を起動するケースはよくあるので覚えておくと便利ですね。

ユーザーフォームを削除する方法

最後に、作成したユーザーフォームを削除する方法について説明します。

1. 削除するユーザーフォームを選択

2. 右クリック→【(ユーザーフォーム名)の解放】をクリック

3. 削除確認画面で「いいえ」ボタンをクリック

これで削除することができます。

まとめ

今回は、初めてユーザーフォームを作る方向けにユーザーフォームの作り方の基礎を説明しました。

今回は基礎の基礎でしたが、次回はコントロールを実際に画面に配置してVBAで処理を書く方法を説明します。

ぶっちゃけ次のところまでできると、あとはググって自分でツールを作ることができるようになりますので、お楽しみに。

The following two tabs change content below.

Siro

ネコ好きフリーランスエンジニア。
開発、技術、働き方、ツールなどについて発信しています。
楽しく、開発しようぜ!