Arrays Excel:在用户定义函数中传递数组?
如何在MS Excel VBA中将数组作为用户定义函数的参数传递 最后,我想测试一个给定的日期(dateDay)是否在几个日期范围内(arrayVacation):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
函数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