如果我的Exit Sub
过程(Function
)在下面的数组中找不到列,我想Colvalidation
。
我知道不可能在End Sub
中Function
,而且我也不知道如何处理。你能帮我吗?
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
答案 0 :(得分:1)
让函数返回一个Boolean
,如果False
不成功,则使它返回Find
。
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
在主子例程中,如果函数返回Exit Sub
,则返回False
:
For Each val In vals
If Not Colvalidation(myRng, val) Then Exit Sub
Next