Есть выгрузка данных, несколько столбцов. По определенному условию мне необходимо заполнить массив Cell.Value и Cell.Offset( ,-11).Value, но я что-то делаю не так, потому что VBA выдает syntax error.
Мой код:
Код
Sub Vacations2()
Dim arrAnotherMonth(), iDatesRange As Range, i%
Columns.EntireColumn.Hidden = False
Rows.EntireRow.Hidden = False
iLastRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).row
Set iDateRange = Sheets(1).Range("Q2:Q" & iLastRow)
For Each Cell In iDateRange
If Month(Cell.Value) <> Month(Cell.Offset(, -1)) Then
ReDim Preserve arrAnotherMonth(0 To i, 0 To i)
arrAnotherMonth(i) = Cell.Value()
arrAnotherMonth(, i) = Cell.Offset(, -11).Value()
i = i + 1
End If
Next Cell
Debug.Print Join(arrAnotherMonth, "; ")
End Sub
Я файл не прикладываю, не ругайте сильно, по-моему можно без примера. Смотрел здесь, но мне не подходит решение, т.к. это не диапазон, а отдельные значения.
Framed написал: ReDim Preserve arrAnotherMonth(0 To i, 0 To i)
Здесь две ошибки. Preserve допускает изменение только последнего индекса размерности. Preserve нельзя использовать, если ранее массив не был создан ReDim arrAnotherMonth(1 to 100, 1 to 2) например.
Андрей VG, спасибо за замечания. Nordheim, вам тоже спасибо. Массив не такой уж большой, 227 значений получилось, выгрузка за полгода. Resize, в итоге, я и хочу использовать.
В общем, задача полностью выглядит так: у меня есть данные по отпускам, и две колонки с датами - одна это дата начала отпуска, вторая это дата конца отпуска. Суть в том, что если месяца не одинаковые (например, я вышел в отпуск в июле, и пришел из отпуска в августе) - то я хочу, чтобы в самом низу создалась еще одна строка с датой конца отпуска.
Звучит просто, если бы я хотел собрать только эти значения, но есть параллельная колонка с персональным номером сотрудников. Я мог бы создать еще один одномерный динамический массив, или же перезаписать существующий, но я сейчас пробую записать сразу обе колонки в один и выгрузить два списка на лист.
Выше текст написал на всякий случай, вдруг кому интересно.
Забираете все данные в массив, затем вводите переменную счетчик, по условию увеличиваете переменную-счетчик на один, и записываете в существующий массив данные, которые этому условию удовлетворяют.Определяете последнюю пустую строку на листе. выгружаете перезаписанный массив. В итоге будет Resize(переменная-счетчик, количество перезаписанных столбцов). Это кратко, без файла примера.