本記事はエクセル2019で動作確認を行っています。

このような疑問にお答えします。
VBAのユーザーフォームとは、
自由な場所に入力欄やボタンを設置して、ユーザーの考えを反映させるフォーム
のことを指します。
最後にこのようなフォームを試しに作成します。
本記事では、
1.ユーザーフォームの追加方法
2.コントロールの配置方法
3.プロパティウィンドの使い方
4.例題をもとに作成手順を確認
の順で解説します。
この記事を読んでいただくと、初心者の方でも、基本的なユーザーフォームの動きが確認できますので、ぜひ最後までお付き合いください。
本記事で概要を理解し、どんどん希望のフォームが作れるように応用力をつけてもらえると幸いです。
また、例題ではご自身でVBAを記述しましょう。
ご自身で手を動かすことがVBA習得の近道です。
目次
1.ユーザーフォームの追加方法
ユーザーフォームはカスタム度が高いので、作成する前にどのようなフォームにしたいのかしっかりイメージする必要があります。
入力するものが必要か?選択はボタンにするか?リスト表示するか?など全体像を決めておきましょう。
ユーザーフォームを追加するには、まずVBEを起動させます。
起動ができれば、「挿入」タブ>「ユーザーフォーム」をクリックします。
これでユーザーフォームが表示されたので、ここにボタンを配置したり、テキストボックスを配置することでオリジナルのフォームを作成することができます。
2.コントロールの配置方法
ユーザーフォームの追加ができれば、次はコントロールの配置方法を確認します。
コントロールとは、
フォーム上に配置するカスタマイズの部品。
部品の種類によって、使えるプロパティやイベントは異なる。
となります。
コントロールの表示
それではコントロールの表示のさせ方を確認します。
「表示」タブ>「ツールボックス」
をクリックするとコントロールが表示されます。
ここにあるボタンを自由に先ほどのユーザフォームの上に配置していきます。
コントロールの種類
コントロールはさまざま存在しますが、とりあえず優先度が高そうなものをご紹介します。
種類 | 内容 |
---|---|
ラベル ☆ | 文字を表示させる。 |
テキストボックス ☆ | 文字を入力することができる。 |
リストボックス | 選択肢のリストを表示させ、項目を選ぶことができる。 |
チェックボックス ☆ | 選択するか否か、二者択一ができる。(複数選択可) |
オプションボタン | 選択するか否か、二者択一ができる。(1つだけ選択) |
コマンドボタン ☆ | VBAを実行させるボタンの作成。 |
※☆印は例題で使用するコマンドです。
コントロールの配置方法
コントロールボタンの設置方法は、
- ツールボタンのコントロールをクリックする。
- ユーザーフォーム上でクリックすると、ボタンが配置される。
- ドラッグをしたり、プロパティを設定することで位置や大きさが変更できる。
基本的にはこのようになります。
後の例題で実際の使い方を見ていくので、まだざっくりとしか理解できなくても心配いりません。
3.プロパティウィンドの使い方
コントロールの詳細情報を指定するにはプロパティを変更する必要があります。
各コントロールのプロパティは「プロパティウインドウ」を利用します。
プロパティウインドウの表示方法
プロパティウインドウは、
「表示」タブ>「プロパティウインドウ」
をクリックすると表示されます。
試しに、ユーザーフォームのオブジェクト名を変更し、タイトルバーの名前も変更してみましょう。
プロパティの種類
プロパティを指定することで、コマンドのサイズや色など自由自在に設定することができます。
ただ、コマンドによって指定できるプロパティは異なります。
ざっくりとプロパティを紹介しておきます。
プロパティ | 内容 |
---|---|
オブジェクト名 | コントロールのオブジェクト名を指定 |
BackColor | 背景色を指定 |
Caption | コントロールに表示する文字を指定 |
Enabled | 有効か無効を指定 |
Font | フォントや文字サイズを指定 |
ForeColor | 文字色を指定 |
Height | 高さを指定 |
TextAlign | 文字の配置を指定 |
Width | 幅を指定 |
4.例題をもとに作成手順を確認
1から3の見出しで基本的なユーザーフォームの使い方を説明しました。
まだイメージが湧きにくいかもしれないので、例題を参考に動きの確認を行いましょう。
(例題)
「登録画面へ」のボタンを設置し、クリックすると下記のユーザーフォームを表示させます。
「氏名」・「住所」を入力し、「DM希望」が必要ならチェックを入れ、登録ボタンを押すと表の一番下の欄にデータを入力するマクロを作成します。
ここが重要!
ユーザフォームはコマンドに入力やチェックを入れることでデータを取得します。
そして、CommandButtonの中に得たデータを使ってVBAを記述することで希望の動作を行えます。
(手順1)ユーザーフォームを作成。
- VBEにユーザーフォームを追加。オブジェクト名を「addForm」Captionを「新規顧客登録」に変更。
- コマンドの追加。氏名と住所のLabelを追加。氏名と住所分のTextBoxを追加。DM希望のCheckBoxを追加。登録とキャンセルのCommandButtonを追加。すべてCaptionを各表示名に変更。
- CommandButtonの中にVBAを記述する。CommandButtonをダブルクリックすると、コードウィンドウを開きます。そこに下記のVBAを記述します。
Option Explicit Private Sub registration_Click() '登録ボタンのオブジェクト名をregistrationに変更している。 Dim dm As String Dim lastRow As Long If TextBox1 = "" Then MsgBox "氏名を入力してください。" Exit Sub End If If TextBox2 = "" Then MsgBox "住所を入力してください。" Exit Sub End If If CheckBox1 = True Then 'CheckBoxにチェックが入れば〇、入っていなければ× dm = "〇" Else dm = "×" End If lastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 '最終行の1つ下の行を取得。 Cells(lastRow, 1) = TextBox1 Cells(lastRow, 2) = TextBox2 Cells(lastRow, 3) = dm Unload addForm '「Unload ○○」でユーザーフォームを閉じる。 End Sub Private Sub cancel_Click() 'キャンセルボタンのオブジェクト名をcancelに変更している。 Unload addForm End Sub
(手順2)ユーザーフォームを表示するボタンを作成。
- エクセルのシート上へ移動。
- 「開発」タブ>「コントロール」の「挿入」>「フォームコントロール」の「ボタン」をクリックし、画面上にボタンを追加。
- ボタンの上で右クリックし「テキストの編集」で「登録画面へ」に変更。
- VBE画面で「標準モジュール」を追加。「標準モジュール」に以下のVBAを記述する。
- シート上の「登録画面へ」ボタンに4の標準モジュールを登録する。
Sub Registation_btn_Click() 'オブジェクト名は自由に変更 addForm.Show '○○.Showでユーザーフォームが表示される。 End Sub
おぼえよう!
Showはユーザーフォームを表示する。
Unloadはユーザーフォームを閉じる。
ここまでできれば、基本的なユーザーフォームの使い方はバッチリです。
長文になったので一読ではなかなか理解できないところもあると思うので、ぜひ何度も読み返して自分のものにしてもらえることを願います。
今回も最後まで目を通していただきありがとうございます。