Access(2007-2016)で、利用フォーム間を遷移するためのボタン「Btn_メニュー」を各フォームに配置しており、各フォームの「Btn_メニュー」クリック時イベントに以下のようなコードを書いていました。
Private Sub Btn_メニュー_Click() DoCmd.OpenForm "F_メニュー" Forms![F_メニュー]![Txt_ログインユーザー名] = Me.Txt_ログインユーザー名.Value DoCmd.Close acForm, "F_各フォーム名" End sub
最近、同じコードはクラスモジュール・標準モジュールにまとめ、そこから呼び出して各フォームで使う方法があるのだと知り、保守運用の観点からその方法に移行したいと考えています。
そこで標準モジュール、各フォームに以下のようなコードを記載しました。
【標準モジュール】 Public Sub メニュー遷移() DoCmd.OpenForm "F_メニュー" Forms![F_メニュー]![Txt_ログインユーザー名] = Me.Txt_ログインユーザー名.Value DoCmd.Close acForm, Me.Name End Sub 【各フォーム】 Private Sub Btn_メニュー_Click() Call メニュー遷移 End Sub
これを実行したところ、「F_メニュー」を開くところまでは動いたのですが、自フォームに記載されているテキストボックス「Txt_ログインユーザー名」の値を「F_メニュー」に代入する3行目の処理と、自フォームを閉じる4行目の処理が上手くいきませんでした。
調べたところ、標準モジュールでは「Me」が使えないとのことでした。代わりに「Screen.ActiveForm」なども試してみたのですが、「指定した式はいずれかの引数とデータ型が一致していません」とのエラーが発生し、なかなかうまく動いてくれません。
標準モジュールにて、「Me」のような対象指定を代わりに行うにはどうすればよいのでしょうか。既出の質問でしたら、参考になるサイトの情報を教えていただけるだけでも助かります。よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/05 07:54
2020/10/05 12:34