回答編集履歴

2

誤字修正

2020/07/05 13:37

投稿

hatena19
hatena19

スコア33740

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  一般的にダイアログボックスを開いているときはそれ以外での操作はできないようになります。
16
16
 
17
- (InputBox, Msgbox, ファイル選択大なログなど)
17
+ (InputBox, Msgbox, ファイル選択ダイアログなど)
18
18
 
19
19
 
20
20
 
@@ -56,7 +56,7 @@
56
56
 
57
57
  Private Sub ボタン1_Click()
58
58
 
59
- DoCmd.OpenForm "フォームC", , , , , acDialog 'ダイアログモードで開く
59
+ DoCmd.OpenForm "フォームC", WindowMode:=acDialog 'ダイアログモードで開く
60
60
 
61
61
  Call ShowDate
62
62
 

1

蛇足追記

2020/07/05 13:37

投稿

hatena19
hatena19

スコア33740

test CHANGED
@@ -67,3 +67,73 @@
67
67
 
68
68
 
69
69
  ダイアログモード(WindowMode:=acDialog)で開くと、フォームはポップアップかつ他のオブジェクトは操作できない状態で開く。さらに、開いたフォームが閉じるまで、次のコードは実行されない。というダイアログボックスと同様の仕様になります。
70
+
71
+
72
+
73
+ ---
74
+
75
+ 質問内容とはずれますが、
76
+
77
+
78
+
79
+ > ボタン1を押下すると、テキストボックス1へ入力した値をpublic変数s_codeへ代入し、
80
+
81
+ フォームBを開き、フォームAを閉じる。
82
+
83
+
84
+
85
+ public変数は、複雑なシステムになってくると想定外に書き変わっていたりとかのバグの元になるので、できる限り使用しないというのが定説です。
86
+
87
+
88
+
89
+ OpenFormメソッドには、OpenArgs引数という値を渡すことのできる引数がありますので、それを利用するのが得策だと思います。
90
+
91
+
92
+
93
+
94
+
95
+ フォームA
96
+
97
+ ```vba
98
+
99
+ Private Sub ボタン1_Click()
100
+
101
+ DoCmd.OpenForm "フォームB", OpenArgs:=Me.テキストボックス1.Value
102
+
103
+ DoCmd.Close acForm, Me.Name
104
+
105
+ End Sub
106
+
107
+ ```
108
+
109
+
110
+
111
+ フォームB
112
+
113
+ ```vba
114
+
115
+ Private s_code
116
+
117
+
118
+
119
+ Private Sub ShowDate()
120
+
121
+ 'テーブルAの変数s_codeに合致するレコードの各フィールドの値を
122
+
123
+ 'テキストボックス1~5へ表示するコード
124
+
125
+ End Sub
126
+
127
+
128
+
129
+ 'フォームの読み込み時
130
+
131
+ Private Sub Form_Load()
132
+
133
+ s_code = Me.OpenArgs
134
+
135
+ Call ShowDate
136
+
137
+ End Sub
138
+
139
+ ```