- Home ›
- Excel VBA入門 ›
- 入力フォームの作成
フォームの利用
フォームの位置やサイズを設定する方法や、 Excel のシートからフォームを呼び出す方法について解説します。
(2022 年 06 月 16 日公開 / 2022 年 06 月 16 日更新)
目次
Excelからフォームを呼び出して表示する
今までフォームを作成する方法を少し見てきましたが、実際にフォームを使うにはExcel上からフォームの表示を呼び出す必要があります。まずはVBAを使ってフォームの表示を行う方法を確認します。
フォームを表示するには「Show」メソッドを使います。
object.Show(modal)
UserForm オブジェクトを表示します。 object にはユーザーフォームのオブジェクトを指定します。省略した場合は、アクティブなユーザーフォームに対応するオブジェクトとなります。引数の modal は省略可能です。ユーザーフォームがモーダルかモードレスかを示す値を指定します。(後述します)。
フォームが表示されるにはフォームがメモリに読み込まれている必要があります。ただ「Show」メソッドを実行すると自動的にフォームがメモリに読み込まれた後で表示が行われます。
オブジェクト名の設定
作成したフォームのオブジェクト名を指定する方法を確認しておきましょう。
まず適当なフォームを作成して、コントロールも適当に配置しておいて下さい。次にVBEの画面上でプロパティウィンドウを表示させた状態でフォームをクリックして下さい。フォームに関するプロパティが表示されます。一番上に表示されているのがこのフォームのオブジェクト名になります。
プロパティはプロパティウィンドウ上で編集が可能です。今回はオブジェクト名を「sampleForm」に変更します。
フォームのオブジェクト名が決まったらVBAのプロシージャ内から次のようにフォームを表示させることができます。
Sub テスト() sampleForm.Show End Sub
モーダルの設定
フォームが画面上に表示された時にモーダルかモードレスかどちらの状態で表示させるかを指定出来ます。引数に指定可能な値は次の通りです。
定数 | 内容 |
---|---|
vbModal | モーダルで表示(デフォルト値) |
vbModeless | モードレスで表示 |
「モーダル」とはフォームが表示されている間はフォーム以外の操作が出来ない状態です。「モードレス」とはフォームが表示されている間もシートなどの他の操作が出来る状態です。
モードレスでフォームを表示するには引数に「vbModeless」を指定して次のように記述します。
Sub テスト() sampleForm.Show(vbModeless) End Sub
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() sampleForm.Show End Sub
上記マクロを実行すると次のようになります。
シートからフォーム表示のマクロを呼び出す
実際にフォームを使って何か行う場合は、ワークシートで編集作業などを行っている時に呼び出す場合が多いと思います。そこでワークシート上にボタンなどを配置してフォームを表示するマクロを呼び出す方法を確認しておきます。
まずワークシートを表示した状態で、「表示」メニューの中の「ツールバー」をクリックし、さらに「フォーム」をクリックします。
すると「フォーム」ツールバーが表示されます。ツールバーの中のボタンをクリックして下さい。
ボタンを作成したい位置をマウスを使って指定します。するとボタンが作成され、自動的にボタンに登録するマクロを指定する画面が表示されます。
今回は前のページで作成した「テスト」と言うマクロを呼び出したいので、「テスト」を選択した上で「OK」ボタンをクリックします。
ボタンに表示される文字列を適当に編集したら完了です。文字列はボタン上で直接書き換えることが出来ます。
それではボタンをクリックしてみて下さい。フォームが表示されると思います。
フォームを閉じる
表示されたフォームは右上角にある「×」ボタンをクリックしても閉じることは出来ますが、ボタンなどをクリックした時に閉じる動作をさせることでフォームを閉じることが出来ます。
フォームを閉じるには「Unload」ステートメントを使います。
Unload object
オブジェクトをメモリから削除します。結果的にフォームが閉じられます。引数の object はアンロードするオブジェクトを指定します。
例えばフォームを閉じる場合には次のように記述します。
Unload UserForm
サンプルプログラム
では簡単なサンプルで試してみましょう。
フォーム上にボタンを一つ配置し「caption」を「閉じる」に変更します。
次にボタンをダブルクリックしてイベントフォームを表示させて下さい。
ボタンのClickイベントの箇所に次のように記述します。
Private Sub CommandButton1_Click() Unload sampleForm End Sub
マクロにはフォームを表示するためのマクロが登録されています。
Sub テスト() sampleForm.Show End Sub
それではマクロを実行してフォームを表示します。
フォーム上の「閉じる」ボタンをクリックするとフォームが閉じます。
フォームの表示する位置を設定する
フォームが表示される位置を設定します。プロパティウィンドウで指定する方法とVBAで指定する方法があります。
まずVBAから設定する方法を確認します。フォームを最初に表示する大まかな位置を設定するには「StartUpPosition」プロパティを使います。
object.StartUpPosition = val
フォームを最初に表示する時の位置を表す値を設定します。値の取得も可能です。 object には設定するフォームを表すオブジェクトを指定します。設定する値の val には表示する位置を表す値を指定します。
位置を表す定数としては次の値が指定可能です。
定数 | 表示される位置 |
---|---|
0 | 初期設定値を指定しません。 |
1 | フォームが属する項目の中央の位置。 |
2 | 画面全体の中央の位置。 |
3 | 画面の左上隅の位置。 |
「0」を設定した場合は自分で位置を指定します。「1」を指定した場合はフォームを呼び出したアプリケーションの中央に表示します。「2」の場合はWindowsの画面全体の中央に表示します。「3」を指定した場合には画面全体の左上に表示されます。
例えば「sampleForm」フォームに対する表示位置を指定するには次のように記述します。
sampleForm.StartUpPosition = 2
実際に設定するにはまず「Load」ステートメントを使ってフォームをメモリに読み込んだ上で設定を行い、その後表示します。
Load sampleForm sampleForm.StartUpPosition = 2 sampleForm.Show
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.StartUpPosition = 1 sampleForm.Show End Sub
上記マクロを実行すると次のようになります。(分かりやすいようにExcel上のシートからマクロを呼び出しました)
今回設定した値は「1」ですので、フォームを呼び出したアプリケーションの中央の位置に表示されます。
位置を自分で指定する
「StartUpPosition」ボタンに「0」を指定した場合は表示する位置を上端及び左端からの距離で指定します。指定するには「Top」プロパティ及び「Left」プロパティを使います。
object.Top = val object.Left = val
フォームを表示する位置を、左端または上端からの距離を基準にして設定します。 object には設定するフォームを表すオブジェクトを指定します。設定する値の val には表示する位置を表す座標を数値で指定します。
位置を表す数値は画面全体の左上からの位置で指定します。単位は「Twip」です。
例えば「sampleForm」フォームに対する表示位置を指定するには次のように記述します。下記では左上から右へ80Twip、下へ50Twip移動した位置にフォームが表示されます。
sampleForm.StartUpPosition = 0 sampleForm.Top = 50 sampleForm.Left = 80 sampleForm.Show
プロパティウィンドウで値を指定する
「StartUpPosition」プロパティ、「Top」プロパティ、「Left」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。
フォームの幅と高さを設定する
フォームの幅と高さを設定します。フォームの幅と高さを設定するには「Width」プロパティと「Height」プロパティを使います。
object.Width = val object.Height = val
フォームを表示する位置を、左端または上端からの距離を基準にして設定します。 object には設定するフォームを表すオブジェクトを指定します。設定する値の val には表示する幅又は高さを表す数値をポイントで指定します。
例えば「sampleForm」フォームの幅を「200ポイント」、高さを「150ポイント」にするには次のように記述します。(0.75ポイント=1ピクセル)。
sampleForm.Width = 200 sampleForm.Height = 150
実際に設定するにはまず「Load」ステートメントを使ってフォームをメモリに読み込んだ上で設定を行い、その後表示します。
Load sampleForm sampleForm.Width = 200 sampleForm.Height = 150 sampleForm.Show
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.Width = 200 sampleForm.Height = 200 sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
プロパティウィンドウで値を指定する
「Width」プロパティ、「Height」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。
フォームの背景色を設定する
フォームの背景色を設定します。フォームの背景色を設定するには「BackColor」プロパティを使います。
object.BackColor = color
オブジェクトの背景色を設定します。 object には設定するフォームを表すオブジェクトを指定します。設定する値の color にはオブジェクトの背景色を表す値または定数を指定します。
色の指定には有効な色を表す任意の整数値を指定するか、又はRGB 関数を使って色を指定します。RGB関数については「RGB関数」を参照して下さい。
sampleForm.BackColor = RGB(128, 64, 64)
実際に設定するにはまず「Load」ステートメントを使ってフォームをメモリに読み込んだ上で設定を行い、その後表示します。
Load sampleForm sampleForm.BackColor = RGB(64, 128, 64) sampleForm.Show
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.BackColor = RGB(64, 128, 64) sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
プロパティウィンドウで値を指定する
「BackColor」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「BackColor」の箇所をクリックすると▼が表示されますのでこれをクリックします。
次のように色を選択するためのカラーパレットが表示されます。好きな色をクリックして下さい。
背景色が変更されます。
-- --
フォームの位置やサイズを設定する方法や、 Excel のシートからフォームを呼び出す方法について解説しました。
( Written by Tatsuo Ikura )

著者 / TATSUO IKURA
初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。