【发布时间】:2019-10-29 07:29:00
【问题描述】:
我正在努力让我的代码正常工作。
我在 Excel 工作表上有一个按钮,当触发时
检查必填字段的值为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
【问题讨论】:
-
你的 if 语句很奇怪。应该只是(单独)
If Mand Then Exit SubIf RecEx Then Exit Sub应该没有End If -
您也可以在一行中执行
If Mand Or RecEx Then Exit Sub。同样,不需要End If -
您还应该收到一条错误消息,指出
End If without block if这将是一个有用的错误,可以包含在您的原始帖子中。
标签: excel vba if-statement stoppropagation