K1. フォーム作成

(vba06)
(vba06)

マクロの実行でしばしば目にするユーザーフォーム、VBA でユーザーフォームを作る方法を学びます。

K1-1. VBA のユーザーフォームの作り方

ユーザーフォームを作る流れ

  1. 空のユーザーフォームを作る
  2. フォームの要素(部品)を追加する
  3. プロパティから、位置やサイズを調整する
  4. フォーム起動時、ボタンクリック時の処理を作る

K1-1-1. 空のユーザーフォームを作る

  1.  VBE を起動し、「挿入」⇒「ユーザーフォーム」を選択する

マクロ付のエクセルファイルか、あるいはマクロが付いていないエクセルファイルのいずれかを開き、VBE を起動する。

 

メニューの「挿入」から「ユーザーフォーム」を選択すると、新しいユーザーフォームが追加される。

(i02) ユーザーフォームを作成する
(i02) ユーザーフォームを作成する
  1.  空の「ユーザーフォーム」が作成される

空のユーザーフォームが追加される。

 

これに合わせて、プロジェクトツリーには「フォーム」フォルダーが追加され、「UserForm1」ファイルが表示される。

 

プロパティウィンドウには、作成された「フォーム」のオブジェクト名、Height(高さ)、Left(左端からの位置)その他などの詳細が表示される。

 

「ツールボックス」には、追加する要素が詰まっている。

(i03) 空のユーザーフォームが追加された
(i03) 空のユーザーフォームが追加された

追加されたばかりのフォームのサイズを、高さ(height)188 ポイント、幅(width)324 ポイント、にする。この値は、いつでも変更可能です。

その方法は、追加されたフォームを選択し、左側に表示される「プロパティ」ウィンドウで、「height」「width」の項目の数字をクリックしてそれぞれの値を直接変更入力するとよい。

 

  1.  「フォーム」付きブックを保存する

このあと詳細を追加・編集を進めるが、これまでの変更を保存しておく。

 

マクロ付ブックで「フォーム」を追加した場合は「上書き保存」にて、または Excel ファイルに「フォーム」を追加した場合は「名前を付けて保存」にて「マクロ付ブック(*.xlsm)」の種類と名前を「フォーム作成練習」等として、保存する。

 

以降、適時「上書き保存」にて保存しながら作成を進めましょう。

 

K1-1-2. フォームの要素を追加する

フォームの要素は「ツールボックス」から選び、サイズを指定して追加する。

 

其の要領は、① まずツールボックスで要素を選択する

② 次にフォーム上の追加位置で「クリック」する

③ その場に要素が編集可能となって、追加される

  • 場所の移動は、要素の枠線をドラッグすると移動できる
  • 要素のコピー・複写、切り取り・削除も可能
  • グリッドの間隔は上下左右6ポイントで、グリッドに合わせて配置すると他の要素と並べることが可能。
  • 他の要素と並べるなど必要に応じて、上からの位置(Top)、左からの位置(Left)、高さ(Height)、幅(Width)、表示(Caption) 等をプロパティウインドウで数値を使って調整する
  • 文字のフォントサイズ、色の変更はプロパティウィンドウにて可能
  • フォームの幅や高さも調整できる

④ 空クリックすると、確定される

もう一度クリックすると再度編集可能となる

 

今回は、「ラベル」「テキストボックス」「チェックボックス」「コマンドボタン」を追加してみる。

  •  「ラベル」を追加する

「ツールボックス」で「ラベル」をクリックする

フォームの上で追加する箇所をクリックすると、「ラベル」が追加される。

 (枠線が表示され)編集可能状態だ。

コンテンツ以外の所で(空の)クリックをすると、確定される。

 「ラベル」上で再度クリックしてすると選択状態となり編集が可能となる。

以降の部品についても同様の操作で設置可能だ。

(i04)「ラベル」を追加する
(i04)「ラベル」を追加する
  •  「テキストボックス」を追加する
(i05)「テキストボックス」追加
(i05)「テキストボックス」追加

テキストボックスは、今回は使わないので、追加したテキストボックスを削除しておく。削除するには、

① 削除する「テキストボックス」を選択する

➁ キーボードの「Delete(削除)」キーを押す

 

 

  •  「チェックボックス」を追加する

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

(i07)「チェックボックス」を追加
(i07)「チェックボックス」を追加

今回、チェックボックスは、下表に示すように、多数(計 18 個)作成する。

最終形の文字表示(Caption)、高さや幅のサイズ(Height、Width)、配置位置(Left、Top)は、以降の「最終的フォーム」項目を参照する。

 

チェックボックスのサイズと配置位置

オブジェクト名 Caption Left Top Height Width
CheckBox1 A班 18 26 18 68
CheckBox2 B班 18 46 18 68
CheckBox3 C班 18 66 18 68
CheckBox4 D班 18 86 18 68
CheckBox16 学習会 18 120 18 68
CheckBox5 HP講習会 90 26 18 68
CheckBox6 テキストWG 90 46 18 68
CheckBox7 機器WG 90 66 18 68
CheckBox8 広報WG 90 86 18 68
CheckBox17 お楽しみクラブ 90 120 18 68
CheckBox9 運営委員会 162 26 18 68
CheckBox10 四役会 162 46 18 68
CheckBox11 世話人会 162 66 18 68
CheckBox12 総会 162 86 18 68
CheckBox18 イオン 162 120 18 68
CheckBox13 希望の家 234 26 18 68
CheckBox14 カルガモの会 234 46 18 68
CheckBox15 生活支援C 234 66 18 68

※ オブジェクト名「CheckBox(n)」:追加するごとに番号(n)が割り振られるが、移動で番号が変わったり削除で番号が欠番となることもある。

必ずしもオブジェクト名 CheckBox(n) と表示名(Caption)の組み合わせがここに示すようになっていなくとも問題は無い。

 

 

始めに、① 高さ(Height)18 ポイント、幅(Width)68 ポイントの CheckBox1 を作り(追加し)、

➁ CheckBox1 の配置位置を、左辺(Left)から 18 ポイント、上辺(Top)から 26 ポイントに指定する

③ 追加された CheckBox1 をクリックして選択し、コピー(「Ctrl」+「C」キー)する

④ 必要な数(17)、計18個)だけ、貼り付け(「Ctrl」+「V」キー)る

⑤ 貼り付けられた CheckBox(n) を順次選んで、配置位置(Left、Top)を指定する

⑥ 表示名(Caption)を順次変更する 

 

(i24) 追加した CheckBox1 をコピーし、17回貼り付ける
(i24) 追加した CheckBox1 をコピーし、17回貼り付ける

(i25) CheckBox1 が18個追加された
(i25) CheckBox1 が18個追加された

(i26) 張り付いた CheckBox(n) に、プロパティ値を入力する
(i26) 張り付いた CheckBox(n) に、プロパティ値を入力する

チェックボックスの初期設定で、チェックが入った状態「オン」にしておくには、プロパティの「Value」を「True」にする。

この設定を「学習会」「お楽しみクラブ」「イオン」に設定しておく。

(i27) CheckBox で初期設定で「オン」にする
(i27) CheckBox で初期設定で「オン」にする
  •  「コマンドボタン」を追加する

「コマンド」ボタンは、(Caption を)「OK」や「閉じる」などと表示し、ボタンを押すことで特定の操作を行うようにできる。

(i06)「コマンドボタン」を追加する
(i06)「コマンドボタン」を追加する
  •  フォント(や文字サイズ)を変更する

フォーム上の全要素を(「Ctrl」+「A」キーで)選ぶ

「プロパティ ウィンドウ」にて「Font」を選択し、右端の「...」をクリックする

(k4_08) フォーム上の全要素を選択し「フォント」の「…」をクリックする
(k4_08) フォーム上の全要素を選択し「フォント」の「…」をクリックする

「フォントダイアログ」で「Meiryo UI」を選び、「OK」をクリックする

(k4_09) Meiryo UI を選ぶ
(k4_09) Meiryo UI を選ぶ
  •  追加した要素を削除などして、最終的に以下に示すフォームを作る

以下のフォームは、この後作成する「MyPasoCalendar マクロ」で使用予定のフォームで、個人が希望するイベントを抽出してカレンダーを作る際の、抽出イベント項目を設定するのに使用するフォームです。

 

フォームの作り方が分かった今の段階で当フォームを作成しておきます。

 

使用している要素は「ラベル」「チェックボックス」と「コマンドボタン」です。

「ラベル」の表示(Caption)は「抽出するカレンダーイベント(複数可)」、

「チェックボックス」の表示(Caption)も、カレンダーのイベント名に、

「コマンドボタン」の表示(Caption)も、「OK」に、それぞれ変更します。

 

数が多いですが、要素のコピー・貼り付けを活用しましょう。

グリッドあるいはプロパティウィンドウに表示される位置(Left / Top)情報で、縦横の並びを、またサイズ(Height / Width)情報で、高さと横幅を、調整します。

(i08) カレンダーイベント抽出用のフォーム
(i08) カレンダーイベント抽出用のフォーム

チェックボックスのサイズと配置位置

オブジェクト名 Caption名 Left Top Height Width
CheckBox1 A班 18 26 18 68
CheckBox2 B班 18 46 18 68
CheckBox3 C班 18 66 18 68
CheckBox4 D班 18 86 18 68
CheckBox16 学習会 18 120 18 68
CheckBox5 HP講習会 90 26 18 68
CheckBox6 テキストWG 90 46 18 68
CheckBox7 機器WG 90 66 18 68
CheckBox8 広報WG 90 86 18 68
CheckBox17 お楽しみクラブ 90 120 18 68
CheckBox9 運営委員会 162 26 18 68
CheckBox10 四役会 162 46 18 68
CheckBox11 世話人会 162 66 18 68
CheckBox12 総会 162 86 18 68
CheckBox18 イオン 162 120 18 68
CheckBox13 希望の家 234 26 18 68
CheckBox14 カルガモの会 234 46 18 68
CheckBox15 生活支援C 234 66 18 68

※ オブジェクト名「CheckBoxN」:追加するごとに番号が割り振られるが、移動で番号が変わったり削除で番号が欠番となることもある。

必ずしもオブジェクト名とCaptionの組み合わせがここに示すようになっていなくとも問題は無い。

  •  完成したフォームを保存する

作業の最後に、「上書き保存」にて保存しましょう。

 

再度ですが、保存されたファイル名は「フォーム作成練習」、ファイルの種類は「マクロ付ブック(*.xlsm)」です。

 

 

当ページで作成したフォームでのマクロの設定は、次の「K2. フォームのマクロ」を参照する。