回答編集履歴
2
誤字修正
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
フォームCを閉じると、フォームBは更新が反映されている。
|
7
7
|
|
8
8
|
一般的にダイアログボックスを開いているときはそれ以外での操作はできないようになります。
|
9
|
-
(InputBox, Msgbox, ファイル選択
|
9
|
+
(InputBox, Msgbox, ファイル選択ダイアログなど)
|
10
10
|
|
11
11
|
現状の問題点は、「ポップアップ」に設定するとアクティブイベントが発生しないというという点ですね(これはAccessの仕様のようです。)
|
12
12
|
|
@@ -27,7 +27,7 @@
|
|
27
27
|
End Sub
|
28
28
|
|
29
29
|
Private Sub ボタン1_Click()
|
30
|
-
DoCmd.OpenForm "フォームC",
|
30
|
+
DoCmd.OpenForm "フォームC", WindowMode:=acDialog 'ダイアログモードで開く
|
31
31
|
Call ShowDate
|
32
32
|
End Sub
|
33
33
|
```
|
1
蛇足追記
answer
CHANGED
@@ -32,4 +32,39 @@
|
|
32
32
|
End Sub
|
33
33
|
```
|
34
34
|
|
35
|
-
ダイアログモード(WindowMode:=acDialog)で開くと、フォームはポップアップかつ他のオブジェクトは操作できない状態で開く。さらに、開いたフォームが閉じるまで、次のコードは実行されない。というダイアログボックスと同様の仕様になります。
|
35
|
+
ダイアログモード(WindowMode:=acDialog)で開くと、フォームはポップアップかつ他のオブジェクトは操作できない状態で開く。さらに、開いたフォームが閉じるまで、次のコードは実行されない。というダイアログボックスと同様の仕様になります。
|
36
|
+
|
37
|
+
---
|
38
|
+
質問内容とはずれますが、
|
39
|
+
|
40
|
+
> ボタン1を押下すると、テキストボックス1へ入力した値をpublic変数s_codeへ代入し、
|
41
|
+
フォームBを開き、フォームAを閉じる。
|
42
|
+
|
43
|
+
public変数は、複雑なシステムになってくると想定外に書き変わっていたりとかのバグの元になるので、できる限り使用しないというのが定説です。
|
44
|
+
|
45
|
+
OpenFormメソッドには、OpenArgs引数という値を渡すことのできる引数がありますので、それを利用するのが得策だと思います。
|
46
|
+
|
47
|
+
|
48
|
+
フォームA
|
49
|
+
```vba
|
50
|
+
Private Sub ボタン1_Click()
|
51
|
+
DoCmd.OpenForm "フォームB", OpenArgs:=Me.テキストボックス1.Value
|
52
|
+
DoCmd.Close acForm, Me.Name
|
53
|
+
End Sub
|
54
|
+
```
|
55
|
+
|
56
|
+
フォームB
|
57
|
+
```vba
|
58
|
+
Private s_code
|
59
|
+
|
60
|
+
Private Sub ShowDate()
|
61
|
+
'テーブルAの変数s_codeに合致するレコードの各フィールドの値を
|
62
|
+
'テキストボックス1~5へ表示するコード
|
63
|
+
End Sub
|
64
|
+
|
65
|
+
'フォームの読み込み時
|
66
|
+
Private Sub Form_Load()
|
67
|
+
s_code = Me.OpenArgs
|
68
|
+
Call ShowDate
|
69
|
+
End Sub
|
70
|
+
```
|