Действительно новичок в VBA, так что простите за любые глупости, которые я говорю / делаю. Этот сайт очень помог мне в ускоренном обучении.
У меня есть набор данных в Excel, который мне нужно переставить с помощью VBA. Я хочу взять (вырезать) данные из столбцов AF: AR для строки и переместить (вставить) их в столбцы J: V в новой строке, вставленной под исходной. Каждый раз, когда я запускаю отчет, размер данных различается, поэтому я подхожу к нему с конца набора данных и перемещаюсь вверх по электронной таблице. У набора данных есть заголовки, поэтому он останавливается на строке 2. До сих пор я планирую перейти к концу набора данных, вырезать данные из последней строки и вставить их в строку ниже, вставить пустую строку выше, затемдвигайтесь вверх по ряду и повторяйте, пока строка 2 не будет достигнута.
Вот что у меня есть:
' Move to end of data.
Selection.End(xlDown).Select
' Repeat loop until top of data is reached..
Do Until ActiveCell.Row = 2
' Get row address of active cell.
ActiveRow = ActiveCell.Row
' Cut and paste data to row below current row.
Range(Cells(ActiveRow, "AF"), Cells(ActiveRow, "AR")).Cut Range("J" & ActiveRow).Offset(1, 0)
' Insert a blank row above.
ActiveCell.Offset(-1, 0).Select
ActiveCell.EntireRow.Insert Shift:=xlDown
' Move to next row of data up.
ActiveCell.Offset(-1, 0).Select
Loop
Во время работы я получаю эту ошибку
"Ошибка времени выполнения" 1004 ": определяется приложением или объект-Ошибка: "
и отладка указывает на следующую строку:
Range(Cells(ActiveRow, "AF"), Cells(ActiveRow, "AR")).Cut Range("J" & ActiveRow).Offset(1, 0)
Не могу найти никакой информации об использовании динамического диапазона со смещением в.Cut функция, так что это может быть проблемой. Что-то не так / отсутствует в моем синтаксисе или есть более простой способ достижения моей цели?
Заранее благодарим за то, что поделились своим гением.