Excel 如果功能程序中的条件未满足,则退出Sub
如果我的Excel 如果功能程序中的条件未满足,则退出Sub,excel,vba,function,loops,Excel,Vba,Function,Loops,如果我的函数过程(Colvalidation)没有从下面的数组中找到列,我想退出Sub。 我知道在函数中不可能结束Sub,我不知道如何处理它。你能帮我吗 Sub test() (...) 'Check if "Earnings", "Deductions", "Employer" headers exist vals = Array("Earnings", "Deductions", "Employer") vals = Array("Earnings"
函数
过程(Colvalidation
)没有从下面的数组中找到列,我想退出Sub。
我知道在函数中不可能结束Sub
,我不知道如何处理它。你能帮我吗
Sub test()
(...)
'Check if "Earnings", "Deductions", "Employer" headers exist
vals = Array("Earnings", "Deductions", "Employer")
vals = Array("Earnings", "Deductions", "Employer Paid Benefits and Taxes")
Set myRng = Worksheets(PayrollWS).Range(Worksheets(PayrollWS).Cells(MyR, 1), Worksheets(PayrollWS).Cells(MyR, 25))
For Each val In vals
Colvalidation myRng, val
If ColFound = False Then 'error = "Variable not defined"
Exit Sub
Next
(...)
End Sub
Function Colvalidation(Rng As Range, value As Variant)
Dim rngX As Range, ColFound as Boolean
Set rngX = Rng.Find(what:=value, lookat:=xlPart, LookIn:=xlValues)
If rngX Is Nothing Then
MsgBox value & " - Column Not Found" 'if column not found, Exit Sub after MsgBox
ColFound = False
Exit Function
End If
End Function
让函数返回一个布尔值
,如果查找
未成功,则将其设为假
Public Function Colvalidation(ByVal Rng As Range, ByVal value As Variant) As Boolean
Dim rngX As Range
Set rngX = Rng.Find(What:=value, LookAt:=xlPart, LookIn:=xlValues)
If rngX Is Nothing Then
MsgBox value & " - Column Not Found"
Colvalidation = False
Else
Colvalidation = True
End If
End Function
在主子程序中,如果函数返回False,则退出Sub
:
For Each val In vals
If Not Colvalidation(myRng, val) Then Exit Sub
Next
让函数返回一个
Boolean
,在函数内部设置为False,然后在test
中如果为False则退出Sub。顺便说一句:Set myRng=Worksheets(PayrollWS)。范围(单元格(MyR,1),单元格(MyR,25))
有问题-请参阅。我已经更新了上面的代码。我还是不知道该怎么办。非常感谢!这就是我要找的。:)