В цикле я хочу проверить, есть ли значение в массиве, и если да, то перейти к следующей итерации.
Мое слабое понимание массивов блокирует меня, хотя:
Я использую функцию ниже (из: Проверьте, есть ли значение в массиве или нет с 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
Но мой саб ниже не работает:
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
Ошибка исходит из строки:
If IsInArray(i, iArray) Then
Я получаю Compile error: ByRef arugment type mismatch
функция IsInArray нуждается в long, и я подставил long в формулу, чтобы я не понял проблему ... Может кто-нибудь объяснить?