Pie*_*e44 1 arrays excel vba excel-vba
在循环中,我想检查值是否在数组中,如果是,则跳到下一次迭代.
我对阵列的低级理解阻止了我:
我正在使用下面的函数(来自:检查值是否在数组中与Excel VBA),以查看值是否在数组中.
Public Function IsInArray(Vtobefound As Long, arr As Variant) As Boolean
Dim i
For i = LBound(arr) To UBound(arr)
If arr(i) = Vtobefound Then
IsInArray = True
Exit Function
End If
Next i
IsInArray = False
End Function
Run Code Online (Sandbox Code Playgroud)
但我的Sub下面仍然不起作用:
Sub CountCellstest()
Dim i, k As Long
' Dim iArray() As Single
ReDim iArray(1 To 1) As Single
For i = 1 To 3
If IsInArray(i, iArray) Then 'ERROR HERE on the i
GoTo next_iteration
End If
ReDim aArray(1 To 1) As Single
iArray(UBound(iArray)) = 2
ReDim Preserve iArray(1 To UBound(iArray) + 1) As Single
'DO smth
MsgBox "test"
next_iteration:
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
该错误来自该行:
If IsInArray(i, iArray) Then
Run Code Online (Sandbox Code Playgroud)
我得到Compile error: ByRef arugment type mismatch
的函数IsInArray需要很长时间,我在公式中放了很长时间,所以我不明白这个问题......有人可以解释一下吗?
常见的错误.你的i变量实际上是Variant不匹配的.您必须单独键入所有变量,如下所示:
Dim i As Long, k As Long
Run Code Online (Sandbox Code Playgroud)