Мне нужно взять один массив (firstArray) и ввести его во второй массив (secondArray). Однако первые четыре поля имеют одинаковое значение. После первых четырех позиций он начинает чередоваться в значениях.
Пример:
firstArray
+---------+
| ID# |
| Name |
| month1 |
| month2 |
| month3 |
| etc... |
+---------+
secondArray
+----------+
| ID# |
| Name |
| month1 |
| month2 |
| NewField |
| month3 |
| NewField |
| month4 |
| etc... |
+----------+
Я довольно новичок в VBA, поэтому я прошу прощения за ужасный код.
Код пока:
Dim i As Integer
i = 0
Dim j As Integer
ReDim secondArray(0 To (fieldCount - 4) * 2)
Dim finalCountDown As Integer
finalCountDown = (fieldCount - 4) * 2
secondArray(0) = firstArray(0)
secondArray(1) = firstArray(1)
secondArray(2) = firstArray(2)
secondArray(3) = firstArray(3)
i = 3
j = 3
Do Until i > finalCountDown
i = i + 1
secondArray(i) = "NewField"
i = i + 1
j = j + 1
secondArray(i) = firstArray(j)
Loop
У меня также есть MsgBox для итерации и вывода моих полей:
'//------ testing output
i = 0
For i = 0 To finalCountDown
MsgBox secondArray(i)
Next i
Я ценю любую помощь! Если есть какая-то путаница, я с удовольствием постараюсь объяснить еще немного!
EDIT:
Два массива имеют разный размер, но являются динамическими. firstArray сначала устанавливается на 20
позиций, в то время как secondArray изначально устанавливается на 32
позиций. (Они рассчитываются каждый раз, когда этот процесс запускается при извлечении архивных данных. Это позволяет моим пользователям добавлять данные и не беспокоиться о необходимости вручную добавлять значения в мои массивы.)
EDIT2:
Я добавил часть Эрика в свой код с некоторыми изменениями. Я также добавил отдельный счетчик для моего первого массива, чтобы убедиться, что он вводит правильные строки в правильные позиции моего второго массива.
EDIT3:
Вот код, который работал для меня:
Dim i As Integer
i = 0
Dim j As Integer
'removed the " - 4"
ReDim secondArray(0 To (fieldCount * 2))
Dim finalCountDown As Integer
'removed the " - 4"
finalCountDown = (fieldCount * 2)
secondArray(0) = firstArray(0)
secondArray(1) = firstArray(1)
secondArray(2) = firstArray(2)
secondArray(3) = firstArray(3)
i = 3
'created own counter for firstArray
j = 3
Do Until i > finalCountDown
i = i + 1
secondArray(i) = "NewField"
i = i + 1
j = j + 1
secondArray(i) = firstArray(j)
Loop
Ошибка, которую я получил, произошла из-за того, что «Subscript not in Range» из-за того, что моя переменная finalCountDown
была меньше, чем требовалось моему массиву. Разрешение переменной становиться больше, чем мой массив, позволил моему массиву завершить итерацию через себя и теперь вводит правильные поля в правильном порядке.
Я принимаю ответ Эрика, так как это был трамплин для ответа на вопрос!