【AccessVBA】フォーム間での値の受け渡しをするとき、値を受け取る側のフォームのイベントは[Open]ではなく、[Active]で作成する。

AccessVBA開発

☆★☆★☆★☆★☆★問題解決☆★☆★☆★☆★☆★☆★
フォーム間で値の受け渡しをする場合、
値を受け取る側のイベントを「Open」で指定すると
「オブジェクトに値を代入できません」とエラーが出る
⇒イベントを「Active」にすると、問題解決!!

☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

まずは、フォーム間(フォーム1⇒フォーム2)で値をやり取りするためのパブリック変数を共通モジュールで定義する。
フォーム1が開くときに、定義したパブリック変数に空文字(初期値)を入れる。
次に、テキストボックスに値を入力し、フォーム2を開こうとするときに入力した値をいったんパブリック変数に格納する。
フォーム2が開いた時(アクティブになったとき)に、パブリック変数から値を受けとる。

【手順】

1.フォーム間で使う変数の定義

※共通モジュールでパブリック定数を定義する。

Public pstrTamTam As String

2.フォーム1が開く時

‘フォーム1が開く時
Private Sub Form_Open(Cancel As Integer)
pstrTamTam = “” ‘とりあえず変数に空文字を入れる
txtTamTam.Value = pstrTamTam ‘テキストボックスへ空文字を入れる
End Sub

3.フォーム1のテキストボックスへ文字を入力

4.フォーム1でフォーム2を開く

‘フォーム2が開くボタンをクリック
Private Sub cmdOpenForm2_Click()
pstrTamTam = txtTamTam.Value ‘テキストボックスの値を変数へ格納
DoCmd.OpenForm “frmForm2” ‘フォーム2を開く
End Sub

5.フォーム2が開く時

‘フォーム2が開く時
Private Sub Form_Active(Cancel As Integer)
lblTamTam.Caption = pstrTamTam
End Sub

 

タイトルとURLをコピーしました