ユーザーフォームって使っていますか?
ユーザーフォームとは、入力フォームを自由にデザインして作成し、表示利用できるVBAの機能のことです。テキストボックスやコンボボックス、リストボックスやチェックボックスなどをフォーム上に配置して表示利用します。
この記事では、ユーザーフォームを使う方法について
- ユーザーフォームを呼び出して使う方法
- ユーザーフォームを閉じる方法
- テキストボックスの使い方
- リストボックスの使い方
- カレンダーの使い方
- コンボボックスの使い方
- チェックボックスの使い方
など基本的な内容から、実用的な内容についても解説していきます。
今回はユーザーフォームの使い方について、わかりやすく解説します!
ユーザーフォームの使い方
まずはユーザーフォームを使う準備をしましょう。
呼び出して表示する方法
ユーザーフォームを呼び出して表示する方法について説明します。
プロジェクトエクスプローラでプロジェクトを右クリックして、「挿入」→「ユーザーフォーム」を選択すると「ユーザーフォーム」が呼び出されます。
以下のように、ユーザーフォームとツールボックスが表示されます。
コードのエディタに切り替える方法
閉じてコードを記述するには、プロジェクトエクスプローラの「コードの表示」をクリックします。
フォームを閉じる方法
フォームを閉じるには、フォームの右上の「×」ボタンを押すか、「コマンドボタン」を押したときに閉じるように処理を記述する必要があります。
以下のように記述します。
Private Sub CommandButton1_Click() Unload UserForm1 End Sub
テキストボックスの使い方
テキストボックスの使い方についてみていきましょう。
テキストボックスは、「ツールボックス」から貼り付けます。「ツールボックス」からテキストボックスのアイコンを選択して、フォーム上の位置までドラッグ&ドロップして貼り付けます。
フォームからドラッグ&ドロップした後
「コードを表示」をクリックするとSubプロシージャが自動で生成されています。
テキストを入力する方法
テキストボックス内に入力したテキストをボタンを押してExcelのシートに転記するようにしましょう。ボタンは「ツールボックス」から「コマンドボタン」をフォームへドラッグ&ドロップします。
「コマンドボタン」をクリックした際の処理を記述しましょう。「コード表示」でコードエディタを確認すると、Subプロシージャ「CommandButton1_Click」が自動で生成されています。
こちらに「コマンドボタン」をクリックした際の処理を記述します。以下の例ではExcelシートの「A1」セルに「テキストボックス」に入力されたテキストを入力するように記述しています。
「実行ボタン」を押して実行すると
Excelシート上に作成したフォームが表示され、操作することができます。
このサンプルの場合、「テキストボックス」にテキストを入力して「コマンドボタン」を押すと、Excelシート上に入力したテキストが表示されます。
ちなみに、「コマンドボタン」の表示文字などをデフォルトの「CommandButton1」から変更したい場合は、「プロパティ」の「Caption」を変更すると反映されます。
テキストを表示する方法
先ほどはテキストを入力する方法についてお伝えしました。テキストボックスを使うと、文字を表示することもできます。
ユーザーフォームの起動時にExcelシート上のセルからテキストを読み込んで表示する例をご紹介します。
Subプロシージャ「UserForm_Initialize」でフォーム起動時の処理を定義します。
テキストを取得、変更するにはTextプロパティを使います。
Private Sub UserForm_Initialize() TextBox1.Text = Range("A1").Text End Sub
実行結果:
リストボックスの使い方
それでは、リストボックスの使い方についてみていきましょう。
リストボックスとは、いくつか登録したテキストの中から選択する場合に使用します。コンボボックスと似ています。
「ツールボックス」から「リストボックス」を選択して、ドラッグ&します。
あらかじめフォームが起動する際に、テキストを登録しておくには以下のように記述します。Subプロシージャ「UserForm_Initialize」でフォーム起動時の処理を定義します。
テキストを登録するには、AddItemメソッドを使います。以下のコードは「リストボックス」から選択した値を「コマンドボタン」を押すとExcelのシート状に表示されるように記述しています。
リストボックスの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。
カレンダーの使い方
カレンダーの使い方についてみていきましょう。
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」は、「ツールボックス」に追加する必要があります。「ツールボックス」の「コントロール」タブの余白上で右クリックを押してください。
「その他のコントロール」をクリックしてください。
「Microsoft Date and Time Picker Control」を選んで「OK」ボタンを押してください。
「ツールボックス」に「DTPicker」が生成されていますので、これをフォームにドラッグ&ドロップします。
日付の「コンボボックス」が現れ、リストとしてカレンダーが表示されます。
「コマンドボタン」を押すと「DTPicker」の値がExcelのシート上に取得できるようにしましょう。
コンボボックスの使い方
次にコンボボックスの使い方についてみていきましょう。
コンボボックスとは、いくつか登録したテキストの中から選択する場合に使用します。「ツールボックス」から「コンボボックス」を選択し、フォームにドラッグ&ドロップします。
「コンボボックス」のテキストを登録するには、AddItemメソッドを使います。フォーム上の「コンボボックス」から入力して、テキストを登録することもできます。
また、あらかじめフォームが起動する際に、テキストを登録しておくこともできます。「コンボボックス」から入力して、テキストを登録する場合の処理の例は以下のとおりです。
「コンボボックス」にテキストを入力して、「コマンドボタン」を押すと登録されるように記述しています。
また、あらかじめフォームが起動する際に、テキストを登録しておくには以下のように記述します。
Subプロシージャ「UserForm_Initialize」でフォーム起動時の処理を定義します。
また、「コンボボックス」のリストの中から何が選ばれたか取得するには、ListIndexプロパティを使用します。
ListIndexプロパティは選択されたインデックス番号を返します。リスト内のテキストを取得したい場合は、Listメソッドを使用します。
コンボボックスの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。
チェックボックスの使い方
それでは、チェックボックスの使い方についてみていきましょう。
チェックボックスとは、その項目が選択されているか、されていないか入力する場合に使います。
「ツールボックス」から「チェックボックス」を選択して、ドラッグ&します。
「コマンドボタン」を押したときに、どの「チェックボックス」が選択されているかメッセージボックスで表示する例が以下のようになります。
まとめ
ここでは、ユーザーフォームの使い方について説明しました。
Excelのシート入力だけでは入力フォームとして不足と感じる場合は、ユーザーフォームで使いやすい入力フォームを作れるようになると作業時間や入力ミスの削減になります。
使いこなすことができるように、この記事を何度も参考にして下さいね!