Excel VBA 满足条件的停止代码
Excel VBA stop code where conditions are met
我很难让我的代码正常工作。
我在 excel sheet 上有一个按钮,当它触发时
检查必填字段值为 0,如果不是则消息框和结束代码
检查主选项卡上是否已存在引用编号,如果存在引用,消息框和结束代码
如果 1 和 2 通过,则执行复制并粘贴为 3 个范围的值,然后出现消息框。
我尝试了很多选项,但无法正常工作
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
正如我在评论中所说,End If
不需要存在:
If Mand Then Exit Sub
If RecEx Then Exit Sub
^ 代码的外观
或者您可以使用:
If Mand Or RecEx Then Exit Sub
您还需要通过包含 End If
块来确保仅将函数设置为 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
设置为真。
我很难让我的代码正常工作。
我在 excel sheet 上有一个按钮,当它触发时
检查必填字段值为 0,如果不是则消息框和结束代码
检查主选项卡上是否已存在引用编号,如果存在引用,消息框和结束代码
如果 1 和 2 通过,则执行复制并粘贴为 3 个范围的值,然后出现消息框。
我尝试了很多选项,但无法正常工作
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
正如我在评论中所说,End If
不需要存在:
If Mand Then Exit Sub
If RecEx Then Exit Sub
^ 代码的外观
或者您可以使用:
If Mand Or RecEx Then Exit Sub
您还需要通过包含 End If
块来确保仅将函数设置为 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
设置为真。