Можно ли как-нибудь скопировать макрос и вставить данные из другого листа на мастер-лист, сохранив формулы на мастер-листе? Поэтому я хочу, чтобы мой макрос вставлял текст только при сохранении форматирования и формул основной таблицы. Я также хочу удалить данные, которые я копирую, из моей ежедневной таблицы после того, как я вставлю ее в мастер. Вот мой макрос

Sub macro ()

Workbooks.Open Filename:= _
        ("I:\Master Copy.xlsm"), Password:="nm"

Dim lNewRow As Long
Dim lDataRow As Long

Windows("Master Copy").Activate
ActiveSheet.Unprotect Password = "nm"
    Windows("Daily Worksheet").Activate
    '1. Find last used row in both sheets
    lNewRow = Workbooks("Daily Worksheet").Worksheets("Sheet1").Cells(Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row
  Windows("Master Copy").Activate
    lDataRow = Workbooks("Master Copy").Worksheets("Submission Log").Cells(Worksheets("Submission Log").Rows.Count, 1).End(xlUp).Row
    lDataRow = lDataRow + 1
    '2. Copy data
    Workbooks("Daily Worksheet").Worksheets("Sheet1").Range("A2:R" & lNewRow).Copy
    '3. Paste data
    Worksheets("Submission Log").Range("A" & lDataRow).PasteSpecial

    Application.CutCopyMode = False
    Selection.ClearContents

  Windows("Master Copy").Activate

ActiveSheet.Protect Password = "nm"


End Sub

1 ответ1

0

Вы не можете делать то, что вы просите, с помощью одной строки кода.

Я предполагаю, что то, что в каждом столбце, в значительной степени совместимо между вашими двумя листами (в противном случае вы бы не пытались копировать весь диапазон с одного листа на другой).

Вот один из способов сделать это:

  1. Скопируйте весь диапазон на лист назначения, как вы сейчас находитесь, но вставьте только текст. Это сохранит форматирование целевого листа, но перезапишет формулы, которые вы хотите сохранить.
  2. На целевом листе скопируйте формулы, которые вы хотите сохранить, из строки выше во вновь вставленную строку. Excel автоматически обновит любые относительные ссылки в формулах. Вы должны будете сделать это для каждой смежной группы ячеек, которые содержат формулы.

Конечно, есть другие способы сделать это, но все они потребуют, чтобы ваш код VBA "знал" ссылки (или как их найти) ячеек, которые должны обрабатываться по-разному. Нет встроенной функции, которая выполняет несколько разных типов копирования, которые вам нужны, в одном диапазоне за одну операцию. У нас есть VBA из-за таких вещей!


Что касается удаления данных из исходного листа, я предполагаю, что вы ищете .Метод ClearContents

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .