Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
Arrays Excel:在用户定义函数中传递数组?_Arrays_Excel_Vba_Parameters_User Defined Functions - Fatal编程技术网

Arrays Excel:在用户定义函数中传递数组?

Arrays Excel:在用户定义函数中传递数组?,arrays,excel,vba,parameters,user-defined-functions,Arrays,Excel,Vba,Parameters,User Defined Functions,如何在MS Excel VBA中将数组作为用户定义函数的参数传递 最后,我想测试一个给定的日期(dateDay)是否在几个日期范围内(arrayVacation): 函数CB_IsInRangeArr(dateDay为日期,ParamArray arrayVacation()为变量)为布尔值 '测试数组是否为2列n行的形式/如果不是,则返回错误 如果(UBound(arrayVacation,1)2),则 CB_IsinRangerarr=CVErr(xlErrNA) 其他的 CB_IsInRa

如何在MS Excel VBA中将数组作为用户定义函数的参数传递

最后,我想测试一个给定的日期(dateDay)是否在几个日期范围内(arrayVacation):

函数CB_IsInRangeArr(dateDay为日期,ParamArray arrayVacation()为变量)为布尔值
'测试数组是否为2列n行的形式/如果不是,则返回错误
如果(UBound(arrayVacation,1)2),则
CB_IsinRangerarr=CVErr(xlErrNA)
其他的
CB_IsInRangeArr=真
如果结束
端函数
然而,在现阶段,该功能无法正常工作。它返回#值

好的,我添加了一个函数

Public Function CB_IsInRangeArr(c As Date, range As range) As Boolean
Dim iRow As Integer

    For iRow = 1 To range.Rows.Count
        Dim startDate As Date, endDate As Date
        startDate = range.Cells(iRow, 1)
        endDate = range.Cells(iRow, 2)
        If (startDate <= c And endDate >= c) Then
            CB_IsInRangeArr = True
            Exit Function
        End If
    Next iRow
End Function
c1是要检查的日期,a1:b2是日期范围

请询问我是否可以提供进一步帮助。

好的,我添加了一个函数

Public Function CB_IsInRangeArr(c As Date, range As range) As Boolean
Dim iRow As Integer

    For iRow = 1 To range.Rows.Count
        Dim startDate As Date, endDate As Date
        startDate = range.Cells(iRow, 1)
        endDate = range.Cells(iRow, 2)
        If (startDate <= c And endDate >= c) Then
            CB_IsInRangeArr = True
            Exit Function
        End If
    Next iRow
End Function
c1是要检查的日期,a1:b2是日期范围


请询问我是否可以提供进一步帮助。

Paramarray创建一个变量数组,每个元素都包含参数: 试试这样的


Function CB_IsInRangeArr(dateDay As Date, ParamArray arrayVacation() As Variant) As Variant

    Dim nParams As Long
    Dim vRangeValues As Variant
    Dim jParam As Long
    Dim j As Long

    nParams = UBound(arrayVacation) - LBound(arrayVacation) + 1
    If nParams &le 0 Then Exit Function
    On Error GoTo Fail

    For jParam = LBound(arrayVacation) To UBound(arrayVacation)

        vRangeValues = arrayVacation(jParam).Value

        For j = LBound(vRangeValues) To UBound(vRangeValues)
            If (vRangeValues(j, 1) &le dateDay And vRangeValues(j, 2) &ge dateDay) Then
                CB_IsInRangeArr = True
                Exit Function
            End If
        Next j

    Next jParam

    Exit Function
Fail:
    CB_IsInRangeArr = CVErr(xlErrNA)
End Function

Paramarray创建变量数组,每个元素都包含参数: 试试这样的


Function CB_IsInRangeArr(dateDay As Date, ParamArray arrayVacation() As Variant) As Variant

    Dim nParams As Long
    Dim vRangeValues As Variant
    Dim jParam As Long
    Dim j As Long

    nParams = UBound(arrayVacation) - LBound(arrayVacation) + 1
    If nParams &le 0 Then Exit Function
    On Error GoTo Fail

    For jParam = LBound(arrayVacation) To UBound(arrayVacation)

        vRangeValues = arrayVacation(jParam).Value

        For j = LBound(vRangeValues) To UBound(vRangeValues)
            If (vRangeValues(j, 1) &le dateDay And vRangeValues(j, 2) &ge dateDay) Then
                CB_IsInRangeArr = True
                Exit Function
            End If
        Next j

    Next jParam

    Exit Function
Fail:
    CB_IsInRangeArr = CVErr(xlErrNA)
End Function