Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果功能程序中的条件未满足,则退出Sub_Excel_Vba_Function_Loops - Fatal编程技术网

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))
有问题-请参阅。我已经更新了上面的代码。我还是不知道该怎么办。非常感谢!这就是我要找的。:)