Итог: Изучите 3 различных способа копирования и вставки ячеек или диапазонов в Excel с помощью макросов VBA. Это серия из трех частей, также вы сможете скачать файл, содержащий код.
Уровень мастерства: Начинающий
Копировать и вставить: наиболее распространенное действие Excel
Копирование и вставка, вероятно, является одним из самых распространенных действий в Excel. Это также одна из самых распространенных задач, которые мы автоматизируем при написании макросов.
Есть несколько различных способов выполнить эту задачу, и устройство записи макросов не всегда дает вам наиболее эффективный код VBA.
В следующих трех видео я объясняю:
- Самый эффективный метод для простого копирования и вставки в VBA.
- Самый простой способ вставить значения.
- Как использовать метод PasteSpecial для других типов вставок.
Видео № 1: Простой метод «Копировать-вставить»
Видео лучше всего просматривать в полноэкранном HD.
Sub Примеры_копирования_диапазона()
'Используйте метод Range.Copy для простого копирования / вставки
'Метод Range.Copy - копирование и вставка с 1 строкой
Range("A1").Copy Range("C1")
Range("A1:A3").Copy Range("D1:D3")
Range("A1:A3").Copy Range("D1")
'Range.Copy с одного листа на другой
Worksheets("Лист1").Range("A1").Copy Worksheets("Лист2").Range("A1")
'Range.Copy с одного файла (на другой
Workbooks("План.xlsx").Worksheets("Лист1").Range("A1").Copy _
Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1")
End Sub
Видео № 2: Простой способ вставить значения
Sub Копируем_только_значения()
'Установите значения ячеек равными другим, чтобы вставить значения
'Устанавливает равенство одного диапазона другому
Range("C1").Value = Range("A1").Value
Range("D1:D3").Value = Range("A1:A3").Value
'Равенство значений между листами
Worksheets("Лист1").Range("A1").Value = Worksheets("Лист2").Range("A1").Value
'Равенство значений между книгами
Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1").Value = _
Workbooks("План.xlsx").Worksheets("Лист1").Range("A1").Value
End Sub
Видео № 3: Метод PasteSpecial
Sub Копируем_с_помощью_специальной_вставки()
'Используйте метод Range.PasteSpecial для выбора типа вставки
'Копируем и вставляем через СпецВставку
Range("A1").Copy
Range("A5").PasteSpecial Paste:=xlPasteFormats
'Используем спецвставку между листами
Worksheets("Лист1").Range("A2").Copy
Worksheets("Лист2").Range("A2").PasteSpecial Paste:=xlPasteFormulas
'Используем спецвставку между файлами
Workbooks("План.xlsx").Worksheets("Лист1").Range("A3").Copy
Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1").PasteSpecial Paste:=xlPasteFormats
'Убираем "бегающих муравьёв" после копирования (очищаем буфер обмена)
Application.CutCopyMode = False
End Sub
Вставить данные ниже последней заполненной строки
Один из самых распространенных вопросов, которые я получаю о копировании и вставке с помощью VBA: «Как мне вставить данные в конец таблицы? «
Сначала нужно найти последнюю заполненную строку данных, а затем скопировать и вставить ниже неё.
Переходите по ссылке, чтобы научиться 3 способам поиска последней заполненной ячейки
Добрый день, такой порядок копирования Worksheets(«Лист1»).Range(«A2»).Copy
справедлив если ты находишься в этом листе, как скопировать если ты в другом листе?
Совсем не обязательно находиться на этом же листе.
Вы же указываете явно лист, который собираетесь копировать