符合条件的Excel VBA停止代码
我正在努力让代码正常工作 我在excel工作表上有一个按钮,当符合条件的Excel VBA停止代码,excel,vba,if-statement,stoppropagation,Excel,Vba,If Statement,Stoppropagation,我正在努力让代码正常工作 我在excel工作表上有一个按钮,当 检查必填字段值是否为0,如果不是,则检查消息框和结束代码 检查主选项卡上是否已存在引用号、引用是否存在、消息框和结束代码 如果1和2通过,则作为3个范围的值执行复制和粘贴,然后单击消息框 我尝试了很多选择,但都没能成功 Function Mand() As Boolean 'checks that mandatory fields have been updated If Sheets("INPUT").Ran
Function Mand() As Boolean
'checks that mandatory fields have been updated
If Sheets("INPUT").Range("C11") > 0 Then MsgBox "Mandatory Fields Missing" & vbNewLine & "Changes Not Saved!"
Mand = True
End Function
Function RecEx() As Boolean
'checks that the reference number does not exisit on the High Level master list
dup = WorksheetFunction.CountIf(Sheets("High_Level_List").Columns(1), Sheets("INPUT").Range("C17"))
If dup > 0 Then MsgBox "This Record Exists!!!" & vbNewLine & "If saving an update, use the Save Changes button"
RecEx = True
End Function
Sub RegisterNewRec()
' checks 2 functions, if either are TRUE then exit, otherwise update master
If Mand Then Exit Sub
If RecEx Then Exit Sub
End If
Dim rng As Range
Set rng = Sheets("INPUT").Range("AO2:CX2")
Sheets("High_Level_List").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value
'more code that updates master
MsgBox "Record added to Master"
End Sub
正如我在评论中所说的那样,
如果不需要,则结束:
If Mand Then Exit Sub
If RecEx Then Exit Sub
^代码应该是什么样子的
或者,您可以使用:
If Mand Or RecEx Then Exit Sub
您还需要确保仅通过包含End if
块,将函数设置为True
(如果上述设置为True):
Function Mand() As Boolean
If Sheets("INPUT").Range("C11") > 0 Then
MsgBox "Mandatory Fields Missing" & vbNewLine & "Changes Not Saved!"
Mand = True
End If
End Function
Function RecEx() As Boolean
dup = WorksheetFunction.CountIf(Sheets("High_Level_List").Columns(1), Sheets("INPUT").Range("C17"))
If dup > 0 Then
MsgBox "This Record Exists!!!" & vbNewLine & "If saving an update, use the Save Changes button"
RecEx = True
End If
End Function
问题是您将RecEx
和Mand
设置为true。您的if语句很奇怪。它应该是(单独的)If Mand然后Exit Sub
如果RecEx然后Exit Sub
应该没有End If
您也可以在一行中执行If Mand或RecEx然后Exit Sub
。同样,没有必要使用End If
你也应该会得到一个错误,说End If without block If
,这将是一个有用的错误,可以包含在你的原始帖子中。谢谢,@user1274820-它现在可以工作,就像我添加的If Mand或RecEx那样,然后退出Sub。但是,当这两个都不正确时(也就是说,所有必填字段都已完成,且参考号不存在,不会发生任何情况。没有消息,其余代码也不会运行(将数据复制到不同的选项卡)。谢谢。它是否真的进入下一行?您可以输入Debug.Print“make it!”
在你的if语句之后-如果它在那里出现了,那么你的代码的其余部分就出了问题(你的文章中缺少了大部分)。谢谢,我添加了调试,但什么也没有发生(没有成功!)。在两个函数都为真时有效,但在两个函数都为假时无效。抱歉,这是一个全新的问题!啊,没问题,伙计,我看到了这个问题。你需要在函数中用end ifs像这样包装你的if语句-30秒后查看我的编辑