Я пытаюсь сравнить один массив строк с другим, чтобы увидеть, присутствуют ли все элементы первого массива во втором. Я делаю это с помощью следующей функции:Массирование массива: Индекс из границ
Dim tempArray As Object
Set tempArray = CreateObject("System.Collections.ArrayList")
For j = 0 To maxNumberOfParts - 1
tempArray.Add (kitPartsArray(i, j))
Next
j = 0
While UBound(partIDs) <= tempArray.Count
Debug.Print (UBound(partIDs) & " " & tempArray.Count & " " & LBound(partIDs))
If partIDs(j) = tempArray(j) Then
j = j + 1
Else
tempArray.Remove (tempArray(j))
End If
Wend
Debug.Print tempArray(1)
j = 0
Exists = True
For Each part In partIDs
Debug.Print tempArray(j)
If part <> tempArray(j) Then
Exists = False
End If
j = j + 1
Next
If Exists Then
DoesntExist = False
existingKits.Add (i)
Else
DoesntExist = True
End If
Идея заключается в том, что он начнет с первой строки в каждом массиве и сравнить их. Если они одинаковы, они перейдут к следующей строке в каждом массиве, но если они будут разными, она удалит строку из массива temp. Затем процесс повторится с строкой, заполненной для удаленной строки. Это продолжается до тех пор, пока два массива не будут одинакового размера. Затем они сравниваются, и если они одинаковы, то все элементы первого массива должны быть в массиве temp. Тем не менее, я получаю ошибку выхода за границы на линии:
If part <> tempArray(j) Then
(Это на самом деле происходит на Debug.Print tempArray (1) и Debug.Print tempArray (J), но когда они удалены это на оператор If)
Вы можете видеть, что оно распечатывает tempArray.Count и на последнем проходе через это. В то время как ... Wend loop, он печатает это как 2. UBound (partID) также 2. Я не могу понять, почему tempArray сокращается в этом промежутке времени, или если нет, то почему он не может получить доступ к этим элементам.
UPDATE: Когда свойство .Count находится в 2, Debug.Print tempArray (j) печатает одно значение перед отправкой ошибки. Когда .Count равно 3, он печатает два значения, а когда в 4, он печатает три значения.
J 1 и .Count равно 2. – Ulthran
Im уверен, что вы наклоняете использовать Debug.Print со ссылками массива итераций. Я не могу вспомнить, но я уверен, что это дало мне массивную головную боль до –
. Я получаю ту же ошибку в инструкции If, когда я удаляю ее, поэтому я не думаю, что это проблема. – Ulthran