Microsoft Access 掲示板

ユーザー定義関数にできるか / 4

6 コメント
views
4 フォロー
4
hiroton 2020/10/29 (木) 10:34:33 16ef8@f966d

クリックしたボタンならMe.ActiveControlで取得できます

Private Sub btn診療リスト_click
    MsgBox Me.ActiveControl.Name '//->「btn診療リスト」が表示される
End Sub

ボタン名:btn診療リスト
フォーム名:F_診断リスト

MsgBox IIf("btn診療リスト" = "F_診断リスト", "同じ", "異なる") '//->異なる

質問の内容だとボタン名とフォーム名は同じではないですね
ボタンの画面上に表示している文字ならそれは標題です。VBAならCaptionで取得できます

ユーザー定義関数とする場合、一つのフォームで使うだけならそのフォームのモジュールに記述してMeキーワードでいいですが、様々なフォームで使おうとするなら標準モジュールに記述することになりMeは使えません。そんなときにはCodeContextObjectを使います

あとはまぁ、どうしてもフォーム名を直接指定したいなんて場合もでるでしょう

Public Function myFormOpen( Optional formName As String)
    DoCmd.OpenForm IIf( formName <> "", formName, CodeContextObject.ActiveControl.Caption ), , , , ,acDialog
End Function
通報 ...