获取数组中项目的索引 VBA
Getting the index of item in an array VBA
我正在尝试获取数组中项目的索引 VBA,但获取它时遇到问题。
Const NoOfVol As Integer = 5
Dim vol(NoOfVol) As Integer
For Index = 1 To NoOfVol
vol(Index) = Cells(15 + Index, 8).Value
Next
数组如下所示:(-2500,-1250,0,1250,2500)。我是这样调用函数的。
Function Find(ByVal Value As Variant, arr As Variant) As Integer
Find = Application.Match(Value, arr, False)
End Function
posOfVol = Find(-1250, vol)
但是posOfVol = 3,而它应该是2。不知道我的错误在哪里。需要一些指导。
您的数组实际上声明为:
Dim vol(0 to NoOfVol) As Integer
除非你有Option Base 1
声明。由于您的循环从 1 到 5,因此您永远不会填充数组的第一个元素并且它保留其默认值 0。因此您的数组实际上是:
(0,-2500,-1250,0,1250,2500)
并且由于您要查找精确 匹配项,因此在第三个位置找到了 -1250。
我正在尝试获取数组中项目的索引 VBA,但获取它时遇到问题。
Const NoOfVol As Integer = 5
Dim vol(NoOfVol) As Integer
For Index = 1 To NoOfVol
vol(Index) = Cells(15 + Index, 8).Value
Next
数组如下所示:(-2500,-1250,0,1250,2500)。我是这样调用函数的。
Function Find(ByVal Value As Variant, arr As Variant) As Integer
Find = Application.Match(Value, arr, False)
End Function
posOfVol = Find(-1250, vol)
但是posOfVol = 3,而它应该是2。不知道我的错误在哪里。需要一些指导。
您的数组实际上声明为:
Dim vol(0 to NoOfVol) As Integer
除非你有Option Base 1
声明。由于您的循环从 1 到 5,因此您永远不会填充数组的第一个元素并且它保留其默认值 0。因此您的数组实际上是:
(0,-2500,-1250,0,1250,2500)
并且由于您要查找精确 匹配项,因此在第三个位置找到了 -1250。