ユーザーフォーム入門
フォームのプロパティ

Excelマクロのユーザーフォームの基礎、エクセルVBAの入門解説
公開日:2013年5月以前 最終更新日:2021-04-16

第2回.フォームのプロパティ


ユーザーフォーム入門として基礎から解説します。
フォームのプロパティの主要なものについて説明します。


フォームの全プロパティ

プロパティはたくさんありますね。

VBA マクロ ユーザーフォーム

これ全部理解するのは大変です。
いずれは、全て理解するに越したことはないですが、
とりあえず、以下に掲載している必要最低限のプロパティだけは把握しておきましょう。

フォームの主要なプロパティ

以下はフォームの主要かつ必須プロパティになります。

プロパティ 説明
ActiveControl コンテナ コントロール上のアクティブ コントロールを取得または設定します。
BackColor 背景色を設定することができます。
BorderColor BorderStyleが1の時、枠の色を設定することができます。
BorderStyle フォームの枠に線を引くか引かないかの設定ができます。
Caption タイトルバーに表示される文字列の設定ができます。
Controls フォーム上に配置されたコントロールのコレクションを取得することが出来ます。
Enabled Trueで通常の表示と操作ができます、Falseでイベントが応答しなくなります。
Font フォーム上に配置されているコントロールの標準フォントを設定します。
ForeColor フォーム上に配置されているコントロールの標準の前景色を設定します。
Height フォームの高さの設定をすることができます。
Left StartupPositionが0(手動)のとき、ユーザーフォームが表示される水平位置を設定できます。
ShowModal
※別途解説
ユーザー フォーム が作業ウィンドウ固定またはモードレスで表示されるように設定します。
実行時には値の取得のみ行えます。
設定 説明
TRUE (既定)ユーザー フォームは作業ウィンドウ固定です。
FALSE ユーザー フォームはモードレスです。
SpecialEffect フォームの枠のスタイルを設定することができます。
StartupPosition フォームが表示される時の位置を設定することができます。
Tag ユーザーが任意の値を設定することができます。
Top StartupPositionが0(手動)のとき、ユーザーフォームが表示される垂直位置を設定できます。
Visible フォームの表示/非表示の状態を取得します。
Width フォームの幅を設定することができます。
Zoom フォームの表示する時に拡大率を設定することができます。

とりあえず、このくらいを押さえておけば良いでしょう。

例えば、フォームのサイズはドラッグで変更できますが、
ドラッグでは、大雑把なサイズでしか設定できません、なかなかマウスでは細かい設定は無理ですよね。
そういう場合は、プロパティの数値を変更することで、正確なサイズを指定できます。
サイズのプロパティは、HeightWidthになります。
ここの数値を変更することでサイズが変わります。

個々のプロパティについては、説明を読んだだけでは実感がわかないものも多くあります。
実際にプロパティを変更して変化した様子を確認すると覚えやすいものです。

ShowModalについて

リファレンスでの説明
ユーザー フォーム が作業ウィンドウ固定の場合、
ユーザーはアプリケーションの他の部分を使用する前に情報を提供するか、 ユーザー フォーム を閉じる必要があります。
ユーザー フォーム が非表示になるかアンロードされるまで、以降のコードは実行されません。
つまり、モーダルの場合、
バックにあるシートの操作は出来なくなります。

ユーザー フォーム がモードレスの場合、
ユーザーは、 ユーザー フォーム を閉じることなく、他のフォームまたはウィンドウを表示できます。
モードレスのフォームはタスク バーに表示されず、ウィンドウ タブ オーダーに従っていません。
つまり、モードレスの場合、
バックにあるシートの操作が可能となります。

この説明は少々分かりづらいと思います。
以下でもう少し詳しく解説します。

ShowModal = True
モーダル表示と言います。
モーダルとは、Windowsに良くあるダイアログ画面です。
モーダルの場合は、
ユーザーフォームが表示されている間
バックのエクセルシートを操作できなくなります。
Showメソッドの実行で止まり次には進みません。
ユーザーフオームが閉じられると
再びバックのエクセルシートを操作できるようになります。
Showメソッドの次のステートメントに進みます。

ShowModal = False
モードレス表示と言います。
モードレスとは、画面表示中に他の処理ができる表示になります。
モードレスの場合は、
ユーザーフォームが表示されている間
バックのエクセルシートを操作できます。
Showメソッドの次のステートメントに進みます。
ユーザーフオームが閉じられると
呼び出し側では、画面が閉じられたことを把握できません。
..Showで画面が表示され、そのまま次のステートメントに進んで処理が終了した状態のままになっています。

Showメメソッド実行時に表示モードを変更できます。
Showメソッドには引数として、FormShowConstants列挙を指定できます。
引数を省略した場合は、ShowModalプロパティに従いユーザーフォームが開かれます。

Showメソッドの引数で、FormShowConstants列挙のメンバ値を指定することで、
ShowModalプロパティの値に関わらず、モーダル/モードレスを指定する事が出来ます。

UserForm.Show vbModal ・・・ モーダル表示
UserForm.Show vbModelessl ・・・ モードレス表示


モーダルとモードレスの使い分け
多くの場合はモーダルで良いはずで、これが既定となっています。
シートのボタン押下等でフォーム画面を表示し、フォーム画面のOKボタンでシート操作に戻る。
良くあるこのような操作で使うのがモーダルになります。

対してモードレスは、フォーム画面操作とシート操作を交互にどちらも操作したい場合に使います。
シートのボタン押下等でフォーム画面を表示した後、
シート操作→フォーム画面操作→シート操作→フォーム画面操作・・・
このような操作を実現したい場合にモードレスを使います。
良くある例としては、
・シート操作の補助機能として複数のセル範囲の選択をさせる
セル範囲選択→フォームのボタン→セル範囲選択→フォームのボタン

モーダル/モードレスにより、VBAの構造は大きく違ってきます。
なにより設計からして全く違ってきます。
モードレスの場合はシート操作ができるので、アクティブシートも随時変化します。
したがって、モーダルに比べるとモードレスの方が設計が大変になる場合が多いでしょう。


今回はここまでです。
次回からは、フォームにいろいろな部品を追加していきます。
ではまた次回お会いしましょう。




同じテーマ「ユーザーフォーム入門」の記事

第1回.ユーザーフォームを挿入

・ユーザーフォームの挿入手順 ・ユーザーフォームの表示方法 ・プロパティの変更 ・ユーザーフォームを表示して確認
第2回.フォームのプロパティ
第3回.コントロールの追加(コマンドボタン)
・ツールボックス ・コマンドボタンを配置 ・プロパティの変更 ・フォームを表示して動作確認
第4回.コントロールの位置・サイズ調整
・OKボタンの追加と移動 ・グリッドに合わせて移動&サイズ調整 ・プロパティで移動&サイズ調整
第5回.ラベルの追加
・ラベルの追加 ・ラベルのプロパティ設定 ・縦書き
第6回.テキストボックス(TextBox)の追加
・テキストボックスの追加 ・テキストボックスの主要なプロパティ ・フォームを表示して確認
第7回.テキストボックス(TextBox)の値をセルへ
・前回までに作成したユーザーフォーム ・ワークシートの用意 ・OKボタンクリック時のイベントプロシージャー作成 ・ユーザーフォームのインテリセンス
第8回.セルの値をテキストボックスへ
・Initializeイベントプロシージャーの追加 ・InitializeイベントプロシージャーのVBAコード ・各モジュール間でのデータ受け渡し方法
第9回.標準モジュールとフォーム間のデータ受け渡しⅠ
・前回までに作成したVBA ・フォーム側でアクティブセルの行数を知る方法 ・標準モジュールのグローバル変数を使う ・標準モジュールからフォームのコントロールを操作する
第10回.標準モジュールとフォーム間のデータ受け渡しⅡ
・Subプロシージャーの引数を使う ・Functionプロシージャーの戻り値を使う ・標準モジュールとフォーム間のデータ受け渡しについて
第11回.コンボボックス(ComboBox)の追加
・コンボボックスの追加 ・コンボボックスのプロパティ・メソッド ・コンボボックスで選択した値を取得 ・コンボボックスの指定リストを選択状態にする ・複数列のコンボボックス


新着記事NEW ・・・新着記事一覧を見る

TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ