2017-10-18 32 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

我得到它的工作。我必須將代碼放在用戶的數據輸入框中,並作爲「更新後」,因爲計算只有在輸入後纔會發生。謝謝Darren,感謝您的幫助。 :)這是可用的代碼。

*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'未聲明。) –