アプリ版:「スタンプのみでお礼する」機能のリリースについて

テーブルには適当なデータが入っています。

フォーム1を作り、コマンドボタンを1個だけ設置して、フォーム2を開くようにするために

Private Sub コマンド0_Click()
DoCmd.OpenForm Form_フォーム2.Name
End Sub

としました。

フォームはテーブルをレコードソースとしています。

フォーム2のモジュールに
Private Sub Form_Current()
Debug.Print "Form_Current"
End Sub

Private Sub Form_Open(Cancel As Integer)
Debug.Print "Form_Open"
End Sub

としたのですが、結果は
Form_Open
Form_Current
Form_Open
Form_Current
になります。

よって、二つのイベントの中にいくつかのプロシージャーが入っているのですが
2回ずつ実行されてしまい、求めている結果と異なってしまいます。

これを回避する方法はありますか?

どうしてもフォーム1のコマンドボタンを押して、フォーム2をひらきたいのです。
よろしくお願いします。

A 回答 (2件)

>DoCmd.OpenForm Form_フォーム2.Name


だと二回発生しますね。
クラスとしてのフォーム2の関係から?のような気がしますが
残念ながらスキルを持ち合わせていません。
DoCmd.OpenForm "フォーム2"
なら1回だけでした。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2013/03/01 20:13

追伸


フォーム2 を閉じた状態で、イミディエイトウィンドウで
?フォーム2.name
とすると、やはりイベントが発生します。
Msgbox "" を加えて置くとと出てきます。
この場合にはフォームは開かれていない(目には見えない)ように感じますが
内部的?に一旦開かれているようです。

なので、Docmd.Openform Form_フォーム2.Name とした場合には
Form_フォーム2.Name で仮オープン?(一回目)して名前を取得
その後、
Docmd.OpenForm フォームの実名(二回目) のようになるという事の様です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2013/03/01 20:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A