Скопируйте диапазон от листа1 до листа2

Я довольно новичок в VBA, но я надеюсь, что кто-то может мне помочь. Вот что я хотел бы сделать;

  1. У меня есть диапазон ("A4:C500") в Sheet1, в котором есть несколько пустых ячеек, например, из. ряд 180
  2. Я хотел бы скопировать весь этот диапазон в Sheet2
  3. После этого, если я вставлю новую строку в лист 1, например. "A24:C24" и я заполняю, например, "A24: C24" значениями. Я хочу сначала вставить всю новую строку в "A24" на Листе 2 (ту же строку, что и новая строка на Листе 1) и переместить все существующие ячейки на 1 строку вниз в листе 2. Новая строка в Sheet2 должна копировать формулы из строки выше (например, строка 24 должна копировать формулы из строки 23)
  4. После того, как новая строка была вставлена ​​в Sheet2, я бы хотел скопировать значения из Sheet1 "A24:C24" в Sheet2 "A24:C24"

Относительно 2. Я попытался использовать некоторый код, как;

Sub Copy()
    Ark1.Range("A4:C500").Copy
    Ark2.Range("A4").Rows("1:1").Insert Shift:=xlDown
End Sub

и это в основном заботится о 2.

Как я могу заставить 3. и 4. работать? Любые идеи для меня, чтобы попробовать?

заранее спасибо

1 ответ

Решение

Для выполнения 3 и 4 вы можете использовать код ниже:

With Ark1
    'insert new row in sheet one
    .Row("24").Insert Shift:=xlDown
    'fill range A24:C24 with values
    .Range("A24:C24").Value = Array("Your", "Values", "Here")
    ' Or if specific cell values (.cells(row, column).value) Array(.cells(1,1).value, .cells(1,2).value, .cells(1,3).value)
End With

With Ark2
    'copy row to retain formulas
    .Row(23).Copy
    'insert new row in sheet two
    .Row(24).Insert Shift:=xlDown
    'get values from sheet one to sheet 2
    .Range("A24:C24").Value = Ark1.Range("A24:C24").Value
End With

PS: Как упоминает К.Д. в своих комментариях, есть много документации, чтобы помочь вам с такими проблемами. K.Dᴀᴠɪs предоставил ссылки:

Другие вопросы по тегам