コントロールタブ内に設置された二つのフォームがあります。
フォーム1(ページ1タブ内)のテキストボックスtxt作成日の値に対応して
フォーム2(ページ2タブ内)のテキストボックス3か所の値が決まります。
フォーム読み込み時と、txt作成日の値が変更される場合、両方の場合に
同じ処理になります。
AccessVBA
1(フォーム1) 2Private Sub Form_Load() 3 txt作成日 = Date 4End Sub 5 6Private Sub txt作成日_AfterUpdate() 7 [Forms]![メインフォーム]![フォーム2]![txt当日] = txt作成日 8 [Forms]![メインフォーム]![フォーム2]![txt1か月後] = DateAdd("m", 1, txt作成日) 9 [Forms]![メインフォーム]![フォーム2]![txt2か月後] = DateAdd("m", 2, txt作成日) 10End Sub 11 12(フォーム2) 13Private Sub Form_Load() 14 txt当日 = [Forms]![メインフォーム]![フォーム1]!txt作成日 15 txt1か月後 = DateAdd("m", 1, [Forms]![メインフォーム]![フォーム1]!txt作成日) 16 txt2か月後 = DateAdd("m", 2, [Forms]![メインフォーム]![フォーム1]!txt作成日) 17End Sub
そこで次のように、標準モジュール内の関数を呼び出すように
コードを書き換えました。
AccessVBA
1(フォーム1) 2Private Sub txt作成日_AfterUpdate() 3 EnterDate 4End Sub 5 6(フォーム2) 7Private Sub Form_Load() 8 EnterDate 9End Sub 10 11Sub EnterDate() 12 [Forms]![メインフォーム]![フォーム2]!txt当日 = [Forms]![メインフォーム]![フォーム1]!txt作成日 13 [Forms]![メインフォーム]![フォーム2]!txt1か月後 = DateAdd("m", 1, [Forms]![メインフォーム]![フォーム1]!txt作成日) 14 [Forms]![メインフォーム]![フォーム2]!txt2か月後 = DateAdd("m", 2, [Forms]![メインフォーム]![フォーム1]!txt作成日) 15End Sub
ただ、処理はフォーム2内のテキストボックスの変更なので、
コードは、標準モジュールではなくフォーム2に書ければと思っています。
フォーム2の方で、フォーム1のtxt作成日の変化を検知する方法があれば、
その方法を使ってフォーム2に書きたいです。
そのような方法はありますでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/13 07:52