Я использую цикл for для создания массива, содержащего допустимые порядковые номера, которые затем будут использоваться в качестве критериев поиска для другой таблицы запросов. Следующий цикл ищет каждый номер заказа в ранее созданном массиве и удаляет строку, если она не находится в массиве. Я хотел бы знать, почему я получаю ошибку несоответствия типа в строке условной инструкции функции поиска. Я попытался объявить массив как вариант, так и массив с отдельными строковыми элементами. Вот укороченный код, спасибо в продвинутом!Что вызывает несоответствие типа массива?
Sub VistaArray()
Dim n As Integer, lastrow As Integer, ordern As String, vista() As Variant
'ADDING NEW ELEMENTS TO ORDER NUMBER ARRAY
For n = 2 To lastrow
i = n - 2
ReDim Preserve vista(i)
ordern = Worksheets(Sheet1).Cells(n, 1).Value
vista(i) = ordern
Next n
'REMOVING LINES FROM SECOND TABLE THAT AREN'T IN THE ARRAY
lastrow = Worksheets(Sheet2).Range("A1").End(xlDown).Row
For n = 2 To lastrow
ordn = ActiveSheet.Cells(n, 1).Value
If IsInArray(ordn, vista) Then
Else
'...REMOVE LINE FROM QUERY TABLE...
End If
Next n
End Sub
Function IsInArray(ordn As String, vista As Variant) As Boolean
IsInArray = (UBound(Filter(ordn, vista)) > -1) '***ERROR OCCURS ON THIS LINE***
End Function
Извините, я вырезал беспорядок для этого сообщения и удалил строку, где я объявил массив как вариант, не понимая, что это ключевая информация. Я добавил эту строку в сообщение. – Diego
'ordn' - это строка, а не массив. 'Фильтр' ожидает массив. Возможно, вам нужно переключить порядок двух аргументов на «Фильтр». –
Хорошо, что объясняет это. У меня были переменные. «vista» - это массив. Спасибо, и извините за пустую трату времени. – Diego