【VBA入門】ユーザーフォームの使い方(テキスト表示、カレンダー)

ユーザーフォームって使っていますか?

ユーザーフォームとは、入力フォームを自由にデザインして作成し、表示利用できるVBAの機能のことです。テキストボックスやコンボボックス、リストボックスやチェックボックスなどをフォーム上に配置して表示利用します。

この記事では、ユーザーフォームを使う方法について

  • ユーザーフォームを呼び出して使う方法
  • ユーザーフォームを閉じる方法
  • テキストボックスの使い方
  • リストボックスの使い方
  • カレンダーの使い方
  • コンボボックスの使い方
  • チェックボックスの使い方

など基本的な内容から、実用的な内容についても解説していきます。

今回はユーザーフォームの使い方について、わかりやすく解説します!

目次

ユーザーフォームの使い方

まずはユーザーフォームを使う準備をしましょう。

呼び出して表示する方法

ユーザーフォームを呼び出して表示する方法について説明します。

プロジェクトエクスプローラでプロジェクトを右クリックして、「挿入」→「ユーザーフォーム」を選択すると「ユーザーフォーム」が呼び出されます。

userform01

以下のように、ユーザーフォームとツールボックスが表示されます。

userform02

コードのエディタに切り替える方法

閉じてコードを記述するには、プロジェクトエクスプローラの「コードの表示」をクリックします。

userform03

フォームを閉じる方法

フォームを閉じるには、フォームの右上の「×」ボタンを押すか、「コマンドボタン」を押したときに閉じるように処理を記述する必要があります。

以下のように記述します。

Private Sub CommandButton1_Click()
    Unload UserForm1
End Sub

テキストボックスの使い方

テキストボックスの使い方についてみていきましょう。

テキストボックスは、「ツールボックス」から貼り付けます。「ツールボックス」からテキストボックスのアイコンを選択して、フォーム上の位置までドラッグ&ドロップして貼り付けます。

userform04

フォームからドラッグ&ドロップした後

userform05

「コードを表示」をクリックするとSubプロシージャが自動で生成されています。

userform06

テキストを入力する方法

テキストボックス内に入力したテキストをボタンを押してExcelのシートに転記するようにしましょう。ボタンは「ツールボックス」から「コマンドボタン」をフォームへドラッグ&ドロップします。

userform07

userform08

「コマンドボタン」をクリックした際の処理を記述しましょう。「コード表示」でコードエディタを確認すると、Subプロシージャ「CommandButton1_Click」が自動で生成されています。

こちらに「コマンドボタン」をクリックした際の処理を記述します。以下の例ではExcelシートの「A1」セルに「テキストボックス」に入力されたテキストを入力するように記述しています。

userform09

「実行ボタン」を押して実行すると

userform10

Excelシート上に作成したフォームが表示され、操作することができます。

userform11

このサンプルの場合、「テキストボックス」にテキストを入力して「コマンドボタン」を押すと、Excelシート上に入力したテキストが表示されます。

userform12

ちなみに、「コマンドボタン」の表示文字などをデフォルトの「CommandButton1」から変更したい場合は、「プロパティ」の「Caption」を変更すると反映されます。

userform13

テキストを表示する方法

先ほどはテキストを入力する方法についてお伝えしました。テキストボックスを使うと、文字を表示することもできます。

ユーザーフォームの起動時にExcelシート上のセルからテキストを読み込んで表示する例をご紹介します。

Subプロシージャ「UserForm_Initialize」でフォーム起動時の処理を定義します。

テキストを取得、変更するにはTextプロパティを使います。

Private Sub UserForm_Initialize()
    TextBox1.Text = Range("A1").Text
End Sub

実行結果:
userform12

リストボックスの使い方

それでは、リストボックスの使い方についてみていきましょう。

リストボックスとは、いくつか登録したテキストの中から選択する場合に使用します。コンボボックスと似ています。

「ツールボックス」から「リストボックス」を選択して、ドラッグ&します。

userform26

userform27

あらかじめフォームが起動する際に、テキストを登録しておくには以下のように記述します。Subプロシージャ「UserForm_Initialize」でフォーム起動時の処理を定義します。

テキストを登録するには、AddItemメソッドを使います。以下のコードは「リストボックス」から選択した値を「コマンドボタン」を押すとExcelのシート状に表示されるように記述しています。

userform28

userform29

リストボックスの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

カレンダーの使い方

カレンダーの使い方についてみていきましょう。

Excel2007以前はAccessに付属の「カレンダーコントロール」を使用しましたが、Excel2010以降は削除されています。

Excel2010以降では、「Microsoft Date and Time Picker Control」(略してDTPicker)を使うようになっています。

詳しくは、こちらの公式サイトを参考にしてください
https://msdn.microsoft.com/ja-jp/library/office/gg251104(v=office.14).aspx

「Microsoft Date and Time Picker Control」は、「ツールボックス」に追加する必要があります。「ツールボックス」の「コントロール」タブの余白上で右クリックを押してください。

「その他のコントロール」をクリックしてください。

userform30

「Microsoft Date and Time Picker Control」を選んで「OK」ボタンを押してください。

userform31

「ツールボックス」に「DTPicker」が生成されていますので、これをフォームにドラッグ&ドロップします。

userform32

日付の「コンボボックス」が現れ、リストとしてカレンダーが表示されます。

userform33

「コマンドボタン」を押すと「DTPicker」の値がExcelのシート上に取得できるようにしましょう。

userform34

userform35

コンボボックスの使い方

次にコンボボックスの使い方についてみていきましょう。

コンボボックスとは、いくつか登録したテキストの中から選択する場合に使用します。「ツールボックス」から「コンボボックス」を選択し、フォームにドラッグ&ドロップします。

userform14

userform15

「コンボボックス」のテキストを登録するには、AddItemメソッドを使います。フォーム上の「コンボボックス」から入力して、テキストを登録することもできます。

また、あらかじめフォームが起動する際に、テキストを登録しておくこともできます。「コンボボックス」から入力して、テキストを登録する場合の処理の例は以下のとおりです。

「コンボボックス」にテキストを入力して、「コマンドボタン」を押すと登録されるように記述しています。

userform16

userform17

また、あらかじめフォームが起動する際に、テキストを登録しておくには以下のように記述します。

Subプロシージャ「UserForm_Initialize」でフォーム起動時の処理を定義します。

userform18

userform19

また、「コンボボックス」のリストの中から何が選ばれたか取得するには、ListIndexプロパティを使用します。

ListIndexプロパティは選択されたインデックス番号を返します。リスト内のテキストを取得したい場合は、Listメソッドを使用します。

userform20

userform21

コンボボックスの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

チェックボックスの使い方

それでは、チェックボックスの使い方についてみていきましょう。

チェックボックスとは、その項目が選択されているか、されていないか入力する場合に使います。

「ツールボックス」から「チェックボックス」を選択して、ドラッグ&します。
userform22

userform23

「コマンドボタン」を押したときに、どの「チェックボックス」が選択されているかメッセージボックスで表示する例が以下のようになります。

userform24

userform25

まとめ

ここでは、ユーザーフォームの使い方について説明しました。

Excelのシート入力だけでは入力フォームとして不足と感じる場合は、ユーザーフォームで使いやすい入力フォームを作れるようになると作業時間や入力ミスの削減になります。

使いこなすことができるように、この記事を何度も参考にして下さいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次