2017-10-18 30 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'未声明。) –