我在VBA上创建了两个单独的函数。
理想情况下,用户将为这些宏分配2个按钮。一个按钮用于验证数据myCheck()
,另一个按钮用于提交数据onSubmit()
。
myCheck()
函数是一个布尔值,设置为true或false,作为指示是否运行onSubmit()
。
因此,如果用户在验证数据之前按onSubmit()
,则不应提交数据,因为myCheck()
已初始化为False
。请参阅以下代码:
Function myCheck() As Boolean
myCheck = False
'Do checking operation
If chkTEP = True And chkNULL = True Then
Output = MsgBox("Validation complete", vbInformation, "Validation")
myCheck = True
ElseIf chkTEP = False And chkNULL = True Then
Output = MsgBox("Double check your TEP combination", vbCritical, "Validation")
myCheck = False
ElseIf chkTEP = True And chkNULL = False Then
Output = MsgBox("There is a blank cell", vbCritical, "Validation")
myCheck = False
Else:
Output = MsgBox("Please make sure spreadhseet is filled correctly", vbCritical, "Validation")
myCheck = False
End If
End Function
从上面可以看出,myCheck函数可以导致TRUE或FALSE。
此后的下一步是运行另一个函数onSubmit()。如果myCheck为FALSE,那么onSubmit将无效......等等。
Sub onSubmit()
If myCheck = False Then
GoTo FuncEnder
Else
'execute onSubmit function here
FuncEnder:
End If
End Sub
我发现一旦onSubmit()被执行,它运行整个函数myCheck(),而不是只检查它存储的布尔值。
答案 0 :(得分:1)
您的按钮需要与“执行”按钮相关联。宏。它将首先测试您的支票,并仅在<>时执行提交假。当您可以将所有这些与一个按钮链接在一起时,不需要2个按钮。您将获得相同的所需输出,用户只需少一步。我还将你的功能改为" Public Function"
功能1
Public Function myCheck() As Boolean
'YOUR FUNCTION HERE
End Function
功能2
Public Function onSubmit()
'YOUR FUNCTION HERE
End Function
宏
Sub Execute()
If myCheck = False Then Exit Sub
Else
onSubmit
End Sub
答案 1 :(得分:0)
在模块中声明myCheck的Public变量。可以检查您的第一个检查按钮是否被按下。例如mybutton.tag = true。
Public myCheck as boolean
那么一切都应该没问题。它会运行,因为它总是错误的。
Sub mybutton_click()
myCheck ' calls the mycheck function
if mycheck then
mybutton.tag="true"
else
mybutton.tag = ""
end if
end sub
然后
在你的第二个子上:
Sub onSubmit()
if mybutton.tag <> "true" then
msgbox" You need to press Mycheck button First!"
exit sub
else
If myCheck = False Then end sub
'execute onSubmit function here
End If
End Sub