0

フラグ設定というグローバル変数があります。コード内のすべてのモジュールからフラグにアクセスできますが、Sub Command97_Click() で値 1 を割り当てると、何らかの理由でフラグが値を Sub Form_BeforeUpdate(Cancel As Integer) に保持しません。Sub Form_BeforeUpdate でフラグを出力すると、もう 1 ではありません。これがばかげていることはわかっていますが、vbaは初めてです...

私のコードはこれ以上のことを行うことに注意してください。ただし、質問の基本のみを保持しています。

前もって感謝します!

Public flag As Integer

Private Sub Command97_Click()
    flag = 1
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If flag = 1 Then
         DoCmd.RunCommand acCmdUndo
         MsgBox "Flag = " & flag, vbInformation
         Exit Sub
    End If
End Sub
4

2 に答える 2

2

変数のスコープに問題があると思われます。フラグ変数が定義されている場所に依存し、他の場所に同じ名前の他の変数があるかどうかによって異なります。
フォーム モジュールの先頭にあるとすればPublic flag as Integer、それは実際にはグローバルではありません。

スコープの説明については、こちらをご覧ください。

于 2013-05-08T18:29:56.830 に答える
0

すべてのモジュールで「パブリック フラグ」と「グローバル フラグ」を検索します。この変数名が 2 回ある可能性があります。
その前に module-name を設定すると、異なる標準モジュール内の 2 つの同じ名前の変数を区別することができます。

Module1.flag = 1
Module2.flag = 1

およびフォームモジュールでの使用

Me.flag = 1

現在使用しているフラグを確認します。

于 2013-05-08T19:24:07.953 に答える