![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
モーダルの上からモードレスで開くことはできません。
(のはず)最上位に表示されているフォームがモーダルである必要があるので、
フォーム間の移動をボタンのみに限定して、ボタンをクリックしたら
モーダルなダイアログと移動先のダイアログを一旦閉じて、
それぞれモードレスとモーダルで開き直せば擬似的に実現できるかなぁってところですね。
面倒ですが。
標準モジュールに以下を書きます。
Public Sub TerminateForm(obj As Object)
On Error GoTo EXIT_Term
obj.Hide
Set obj = Nothing
EXIT_Term:
End Sub
フォーム1(親)にボタンをつけて、フォーム2(子)を呼び出すコード
Private Sub CommandButton1_Click()
'子フォームをモーダルで呼び出す
Call TerminateForm(UserForm1) 'モーダルなフォームを消す
Call TerminateForm(UserForm2) '移動先のフォームを消す
UserForm1.Show vbModeless '元フォームをモードレスで表示
UserForm2.Show vbModal '移動先フォームをモーダルで表示
End Sub
フォーム2(子)から、フォーム1(親)に戻るコード
Private Sub CommandButton1_Click()
'親フォームに戻る
Call TerminateForm(UserForm2)
Call TerminateForm(UserForm1)
UserForm2.Show vbModeless
UserForm1.Show vbModal
End Sub
それぞれのフォームのプロパティかInitializeイベントでフォームの表示位置を決定しておくといいかもしれません。
TerminateFormを呼ぶと親フォームの表示内容(リストボックスとか)が初期化されてしまうので、
削除する前にグローバル変数に内容を格納しておいて、Initializeで読み込むようにすれば表示内容も保てると思います。
No.2
- 回答日時:
ええ、残念ながら最上位のフォームからマウスクリックで別のフォームを選択することができません。
だからこそのモーダルフォームと言えます。
他のフォームをアクティブにするためのボタンを作って、サンプルで示したようなやり方でモーダルとモードレスを切り替えれば
エクセル本体にはアクセスさせないままフォームだけを操作できるかなぁ、ということで「擬似的に実現」と書いたわけです。
以上、補足でした
この回答へのお礼
お礼日時:2009/05/09 01:20
どうもありがとうございます。
フォームのヘルプ画面として親フォームの横にくっつけて表示させたかったのですが、シートにヘルプを作って表示させることにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Google Drive Googleフォームについて(至急) 2 2022/06/28 21:45
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Excel(エクセル) エクセルのファームにプルダウン設置できますか? 2 2022/05/19 23:38
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) マイクロソフト アクセス2021のフォームビュー作成でレイアウトを帳票形式から単票形式にあとから変更 1 2023/03/03 10:56
- その他(ソフトウェア) Googleフォーム、効率的な入れ方 2 2022/10/03 22:44
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Hideについて(.NET)
-
ACCESSのフォーム、開くんです...
-
エクセルVBAのフォームを最...
-
ユーザーフォームのテキストボ...
-
【VBAユーザーフォームで閉じる...
-
フォームウィンドウを最前面に...
-
Form_Load と Form_Activate の...
-
Accessで、一つのフォーム画面...
-
ユーザーフォーム上に現在日時...
-
コントロールの存在確認
-
Microsoft Formsの「個人情報や...
-
サブフォームのイベントを取得...
-
なぜエラーになるのでしょう?...
-
アクセスのUserFormにはInitial...
-
ExcelVBAでユーザーフォームが...
-
ブックをCloseまたはQuitで閉じ...
-
フォームを開いてからの時間を取得
-
VBA コンボボックスとテキスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
クリックイベントなのに、2回ク...
-
MSGBOXのフォント大きさ変更
-
VBAでユーザーフォームを再表示...
-
Hideについて(.NET)
-
Form_Load と Form_Activate の...
-
モーダルフォームとモードレス...
-
コントロールの存在確認
-
ユーザーフォーム上に現在日時...
-
【VBAユーザーフォームで閉じる...
-
エクセルVBAのフォームを最...
-
ACCESSのフォーム、開くんです...
-
Microsoft Formsの「個人情報や...
-
VBA(エクセル)のユーザー...
-
フォームウィンドウを最前面に...
-
ユーザーフォームのラベルに時...
-
'ユーザーフォーム右上隅の[×...
-
Excelにて、ユーザーフォームで...
おすすめ情報