2017-10-18 15 views
0

Microsoft AccessでVBAを使用しています。ユーザーが「停止時間」の各入力を完了する前に、コードを実行する必要があります。私は、ボックスの値が負の数でないことを確認しようとしています。ボックスには実際に数式が保持されます。それが重要かどうかはわかりませんが、私はそれについて言及すると思いました。計算の結果(そのボックスに表示されている値)をチェックし、0より小さい場合はMsgBoxをポップアップしたいと思います。私のコードは何もしていません。エラーもポップアップも警告もありません。条件が満たされたときにVBAコードが反応しない

ここに私のコードです。

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    If (Me.RunningTotal.Value < 0) Then 
     MsgBox (RunningTotal & "Please check your downtime.") 
     Cancel = True 
    End If 
End Sub 

"RunningTotal"を括弧で囲んで使用してみました。私もbeforeupdatとafterupdateを試しました。

+0

'BeforeUpdate'イベントは計算されたコントロールでは発生しません。ユーザーが_downtime_の入力を完了したとします。 - ユーザーが手動で完了したコントロールにコードを追加します。 –

+0

それは私がコードを試した最初の場所でした。すみません、私もそう言及すべきでした。私は、ユーザー入力ボックス、フォーム自体と計算フィールドにコードを入れてみました。 – Flammie

答えて

0

私はそれを働かせました。私は、ユーザーのデータ入力ボックスにコードを入れなければなりませんでした。そして、エントリが作成されるまで計算が行われないので、「更新後」としてください。ダレン、ありがとう。 :)ここで動作するコードです。

*Private Sub MinutesDown_AfterUpdate() 
    If (Me.RunningTotal < 0) Then 
     MsgBox (RunningTotal & "Please check your downtime.") 
     Cancel = True 
    End If 
End Sub* 
+0

'Cancel = True'はこのコードでは何もしません。 AfterUpdateイベントには、 'Cancel'引数はありません。コンパイル時に宣言されていない変数を強調表示するように、 'Option Explicit'をすべてのコードモジュールの先頭に追加することをお勧めします(ここで' Cancel'は宣言されていません)。 –

関連する問題