No.2ベストアンサー
- 回答日時:
実際にフォーム1とフォーム2を作成し、フォーム1に二つのコマンドボタンを用意して、以下のコードを貼り付けて見てください。
Private Sub Command1_Click()
Form2.Show vbModal, Me
MsgBox "vbModal"
End Sub
Private Sub Command2_Click()
Form2.Show vbModeless, Me
MsgBox "vbModeless"
End Sub
Command1でもCommand2でもフォーム2が開きます。しかしMsgBoxが表示するタイミングが変わってるはずです。
Command1の場合はフォーム2が閉じたあと
Command2の場合はフォーム2が表示されたあと
にメッセージボックスが表示されます。
つまりCommand1はShowのあとのロジックを、フォーム2が閉じるまで、未処理のままとなるわけです。
画面上はフォーム2が前面、フォーム1が背面になるどちらも似たような表示に見えますが、
Command1の場合はフォーム1はフォームをクリックしても、フォーカスを持たない
Command2の場合はフォーム1はフォームをクリックすると、フォーカスを持ちえる
という点も違います。
簡単にまとめると、
vbModalの場合はフォーム2だけに作業処理を固定させたい時に使用します。vbModelessの場合はフォーム2はポップアップ的な使用方法の時に使います。
No.4
- 回答日時:
モーダルフォームは、オプションやバージョン情報などをだす時に使います。
一度見たらあまり開かないフォームに使います。例.Excelのバージョン情報、IEのオプション等
モードレスフォームは、1つのアプリケーションで複数フォームを見たいとき使います。
例.Wordで文書新規作成
No.1
- 回答日時:
モーダルは、ほかのウィンドウがアクティブにならない。
モードレスは、アクティブになる。
画像を保存する時などに出てくるダイアログボックス(出ている時に元画像をアクティブにできない)などがモーダル。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
-
4
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
5
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
6
Excel ユーザーフォームをモードレスで表示後
Visual Basic(VBA)
-
7
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
-
10
配列を関数に渡す方法
Visual Basic(VBA)
-
11
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
12
DoEventsがやはり分からない
Visual Basic(VBA)
-
13
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
14
コモンダイアログコントロールがコンポーネントにありません
Visual Basic(VBA)
-
15
文字数に合わせて、コントロールの幅を設定する方法
Visual Basic(VBA)
-
16
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
17
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
18
ExcelのComboboxでマウスのスクロールを有効にしたい
Excel(エクセル)
-
19
CloseとDisposeの違い
Visual Basic(VBA)
-
20
ListView 項目の選択/選択解除について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
Form_Load と Form_Activate の...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
ユーザーフォームのラベルに時...
-
VB.NETでフォームロード中のエ...
-
Microsoft Formsの「個人情報や...
-
特定のフォームが開いているか...
-
テキストボックスの番号の取得
-
VBAでユーザーフォームを再表示...
-
VBA(エクセル)のユーザー...
-
エクセルのチェックボックスの...
-
(Excel+VBA)ユーザーフォームの...
-
C# フォームのShow()をオーバー...
-
フォームを画面の下側ぴったり...
-
ACCESSのフォーム、開くんです...
-
現在開いている全てのフォーム...
-
Access VBA コントロールの参照...
-
C#で3つのプログラムができま...
-
ユーザーフォーム上に現在日時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Microsoft Formsの「個人情報や...
-
Form_Load と Form_Activate の...
-
VBAでユーザーフォームを再表示...
-
クリックイベントなのに、2回ク...
-
ユーザーフォーム上に現在日時...
-
テキストボックス入力データの...
-
VBAのテキストフォームの折り返...
-
ACCESSのフォーム、開くんです...
-
Hideについて(.NET)
-
ユーザーフォームのテキストボ...
-
エクセルVBAのフォームを最...
-
モーダルフォームとモードレス...
-
EXCEL VBA ユーザーフォームの...
-
フォームのテキストボックスな...
-
コントロールの存在確認
-
パソコンの画面に合わせてユー...
-
フォームウィンドウを最前面に...
-
Accessで、一つのフォーム画面...
おすすめ情報