如果某个字符串,数字或日期在数组中,我发现了一个返回true/false结果的函数。我略微修改了它,所以它给了我一个数字(如果该值在数组中,它给了我坐标,否则它给我-1)。IsInArray函数VBA
Public Function IsInArray2(DateToBeFound As Date, arr As Variant) As Long
Dim position As Long
IsInArray2 = -1
For position = LBound(arr, 1) To UBound(arr, 1)
If arr(position) = DateToBeFound Then
IsInArray2 = position
Exit For
End If
Next
End Function
我想用这个函数来检查日期是否在数组中。如果是这样,我可以在我的代码中使用坐标进一步计算。
问题:出于某种原因,我正在与错误的行(下标超出范围):
If arr(position) = DateToBeFound Then
我已经试图改变阵列基准,改变日期数字,串,并尝试重新设置数组的最大数量,但错误依然存在。
任何想法?
'arr(position,1)';) – R3uK
感谢您的回答。我也已经尝试过,结果相同。无论哪种方式,由于数组只有一个维度,是否有必要说明维度的外观? – DGMS89
您是手动构建阵列还是从一个范围加载它?你如何将它传递给你的函数?尝试在循环开始处添加Debug.Print LBound(arr,1):Debug.Print UBound(arr,1):Debug.Print position'。 – R3uK