【发布时间】:2015-10-27 02:24:57
【问题描述】:
我正在尝试在 VBA 中编写一个简单的函数,该函数将来自 Excel 的日期和日期数组作为输入。如果给定日期是数组的一部分,则返回 true,否则返回 false。
我的问题是来自 excel 的数组是二维的,但我总是传入一维数组。换句话说,一个列和一个行值,所以我可以检查我的数组中的值,但我传入一个一维数组。
这是我的代码:
Function IsInArray(ByVal MyDate As Date, ByRef Holiday_Calendar As Range) As Boolean
Dim length As Integer
length = WorksheetFunction.Count(Holiday_Calendar)
Dim counter As Integer
'counter = 0
For counter = 0 To length
If Holiday_Calendar(counter) = MyDate Then
IsInArray = True
End If
Next counter
IsInArray = False
End Function
【问题讨论】:
-
我的函数总是返回 False 因为 Holiday_Calendar(counter) = MyDate 总是 False 因为Holiday_Calendar(counter) 出于某种原因需要一行和一列值
-
所以
Holiday_Calendar是一维的,但其他一些数组是二维的?试试If Holiday_Calendar(counter,1) = MyDate Then -
您的函数总是返回 false,因为您将
IsInArray = False放在函数的末尾。 (; -
我的测试用例正在调用 excel 中的函数,MyDate 是 8/7/2015,Holiday_Calendar 是 8/3/2015、8/7/2015、8/10/2015、8/13/ 2015 年,2015 年 8 月 14 日。我仍然得到虚假天气我在 if 语句中使用 Holiday_Calendar(counter) 或 Holiday_Calendar(counter, 1) 或 Holiday_Calendar(1, counter)
-
哦,好吧,汤姆,但我的函数不应该先点击 IsInArray = True 吗? (因为第二次条件为真)