HOME > 即効テクニック > AccessVBA > コントロール > コードを実行しているオブジェクトを参照

即効テクニック

コントロール

コードを実行しているオブジェクトを参照

(Access 97)
●概要●
共通関数などで、コード実行元のフォーム名やレポート名をその都度参照するには、(Application.)CodeContextObjectプロパティを利用できます。
例えば、新規標準モジュールに以下のサンプルコードを記述し、各フォームの更新前処理イベントプロシージャに

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Call SetChgDate	' 共通更新処理
End Sub

のように記述すれば、各フォームの更新処理を共通化することが出来ます。
●サンプルコード●
' レコード変更時に更新日時をセット
Public Function SetChgDate()
    Dim obj As Form     ' フォームのみの場合
    'Dim obj As Report   ' レポートのみの場合
    'Dim obj As Object   ' フォーム/レポート 両用
    
    ' 呼び出し元オブジェクトをセット
    Set obj = CodeContextObject
    
    ' 更新フラグと更新日時を更新
    obj.[更新フラグ] = True
    obj.[更新日時] = Format(Now, "YYYYMMDDHHNNSS")
    
    ' オブジェクト解放
    Set obj = Nothing

End Function
●備考●
オブジェクトを
    Dim obj As Object
と宣言すれば、呼び出し元がフォームでもレポートでも対応できますが、どちらかに決まっている場合は、

    Dim obj As Form     ' フォームのみの場合

あるいは

    Dim obj As Report   ' レポートのみの場合

のように宣言した方が、リソースの節約になります。