Оглавление
Когда вам нужно, вы можете скопировать диапазон с одного листа на другой лист или рабочую книгу. Существуют различные типы копирования и вставки. В этой статье вы познакомитесь с различными способами использования Excel VBA для копирования диапазона на другой лист.
Чтобы сделать объяснение более живым, я собираюсь использовать пример набора данных, который представляет личную информацию конкретных людей. Набор данных имеет 4 столбца. Эти столбцы - это Имя, Фамилия, Полное имя, и Электронная почта .
Скачать рабочую тетрадь для практики
VBA Копирование диапазона на другой лист.xlsm8 способов копирования диапазона в Excel VBA на другой лист
1. Копирование диапазона на другой лист с помощью формата
Когда бы вы ни захотели Копировать диапазон от одного листа к другому листу с Формат вы можете просто сделать это с помощью VBA .
Вот, я Копировать диапазон от Набор данных лист на WithFormat лист.
Давайте начнем процедуру,
Сначала откройте Разработчик вкладка>> выбрать Visual Basic
Вы также можете использовать ALT + F11 клавиатуры, чтобы открыть VBA редактор.
Далее откроется новое окно с именем Microsoft Visual Basic for Applications.
Оттуда откройте Вставка >> выбрать Модуль .
A Модуль откроется, затем введите следующий код в открывшемся окне Модуль .
Sub Copy_Range_withFormat_ToAnother_Sheet() Range("B1:E10").Copy Worksheets("WithFormat").Range("B1:E10") End Sub
Здесь я объявил Подпроцедура Копировать_диапазон_с_форматом_на_другой_лист
Я взял диапазон B1:E10 для копирования с существующего листа на имя листа WithFormat .
Здесь я использовал Копировать метод для копирования выбранного диапазона, Копировать метод копирует любой диапазон с Формат .
Наконец-то, Сохранить код и вернуться к рабочему листу.
Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов
➤ A диалоговое окно появится.
Теперь из Имя макроса выбрать Копировать_диапазон_с_форматом_на_другой_лист также выберите рабочую книгу внутри Макросы в .
Наконец-то, Запускайте выбранный Макро .
Следовательно, это будет Копировать выбранный диапазон с Формат на новый лист, который я выбрал ( WithFormat) .
2. VBA Копирование диапазона на другой лист без форматирования
Также можно Копировать диапазон на другой лист без Формат с помощью VBA .
Вот, я Копировать диапазон от Набор данных лист на WithoutFormat лист.
Давайте приступим к процедуре,
Теперь откройте Разработчик вкладка>> выбрать Visual Basic ( использовать ALT + F11)
Далее откроется Microsoft Visual Basic for Applications.
Затем откройте Вставка >> выбрать Модуль .
A Модуль откроется, затем введите следующий код в открывшемся окне Модуль .
Sub Copy_Range_WithoutFormat_Toanother_Sheet() Range("B1:E10").Copy Sheets("WithoutFormat").Range("B1").PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
Здесь я объявил Подпроцедура Копировать_диапазон_без_формата_на_другой_лист
Я взял диапазон B1:E10 для копирования из существующего листа в имя листа WithoutFormat .
Здесь я использовал Копировать метод для копирования выбранного диапазона, но также упоминается Paste:=xlPasteValues в PasteSpecial метод, чтобы он вставлял только Значения выбранного диапазона, а не формата.
Наконец-то, Сохранить код и вернитесь на рабочий лист.
Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов
➤ A диалоговое окно появится.
Теперь из Имя макроса выбрать Копировать_диапазон_без_формата_на_другой_лист а также выберите рабочую книгу внутри Макросы в .
Наконец-то, Запускайте выбранный Макро .
Таким образом, это будет Копировать выбранный диапазон только с Значения нет Формат .
3. Копирование диапазона на другой лист с форматом и шириной столбцов
Иногда вы можете захотеть Копировать любой выбранный диапазон, как он есть, для этого вы можете Копировать диапазон с Формат и Ширина колонки .
Вот, я Копировать диапазон от Набор данных лист на Формат и ширина столбцов лист.
Чтобы увидеть процедуру выполнения задания с помощью VBA ,
Сначала откройте Разработчик вкладка>> выбрать Visual Basic
Вы также можете использовать ALT + F11 клавиатуры, чтобы открыть VBA редактор.
Далее откроется новое окно Microsoft Visual Basic for Applications.
Вот, откройте Вставка >> выбрать Модуль .
A Модуль откроется, затем введите следующий код в открывшемся окне Модуль .
Sub Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth() Range("B1:E10").Copy Destination:=Sheets("Format & ColumnWidth").Range("B1") Range("B1:E10").Copy Sheets("Format & ColumnWidth").Range("B1").PasteSpecial Paste:=xlPasteColumnWidths, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
Здесь я объявил Подпроцедура Копировать_диапазон_на_другой_лист_с_форматом_и_шириной_колонки
Я взял диапазон B1:E10 для копирования с существующего листа на имя листа назначения Формат и ширина столбцов .
Здесь я использовал Копировать для копирования выбранного диапазона. Я также использовал метод PasteSpecial метод, где я упомянул Paste:=xlPasteColumnWidths чтобы вставить выбранный диапазон вместе с Формат и Ширина колонки .
Наконец-то, Сохранить код и вернуться к рабочему листу.
Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов
➤ A диалоговое окно появится.
Теперь из Имя макроса выбрать Копировать_диапазон_на_другой_лист_с_форматом_и_шириной_колонки а также выберите рабочую книгу внутри Макросы в .
Наконец-то, Запускайте выбранный Макро .
В результате этого Копировать выбранный диапазон с Формат и Ширина колонки .
4. VBA Копирование диапазона на другой лист с помощью формулы
Если у вас есть какая-либо формула в наборе данных, которую вы хотите скопировать, не беспокойтесь! Вы можете скопировать диапазон, содержащий Формула на другой лист, сохраняя формулу в неизменном виде.
Вот, я Копировать диапазон от Набор данных лист на WithFormula лист
Давайте начнем процедуру,
Для начала откройте Разработчик вкладка>> выбрать Visual Basic ( вы также можете использовать ALT + F11 клавиатура)
Далее откроется Microsoft Visual Basic for Applications.
Оттуда откройте Вставка >> выбрать Модуль .
A Модуль откроется, затем введите следующий код в открывшемся окне Модуль .
Sub Copy_Range_withFormula_ToAnother_Sheet() Range("B1:E10").Copy Sheets("WithFormula").Range("B1").PasteSpecial Paste:=xlPasteFormulas, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
Здесь я объявил Подпроцедура Копировать_диапазон_с_формулой_на_другой_лист
Я взял диапазон B1:E10 для копирования с существующего листа на имя листа назначения WithFormula .
Здесь я использовал Копировать для копирования выбранного диапазона. Я также использовал метод PasteSpecial метод, где я упомянул Вставить:=xlPasteFormulas так, чтобы она несла Формулы вместе с выбранным диапазоном.
Наконец-то, Сохранить код и вернуться к рабочему листу.
Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов
➤ A диалоговое окно появится.
Теперь из Имя макроса выбрать Копировать_диапазон_с_формулой_на_другой_лист также выберите рабочую книгу внутри Макросы в .
Наконец-то, Запускайте выбранный Макро .
Таким образом, это будет Копировать все выбранные диапазоны ячеек с Формулы .
Похожие чтения:
- Как использовать смещение диапазона в VBA (11 способов)
- VBA для каждой ячейки диапазона в Excel (3 метода)
- Как использовать объект Range в VBA в Excel (5 свойств)
5. Копирование диапазона с автоподгонкой на другой лист
В то время как Копирование диапазон на другой лист, вы также можете использовать AutoFit метод в VBA на AutoFit скопированный диапазон на новом листе.
Вот, я Копировать диапазон от Набор данных лист на AutoFit лист
Давайте начнем процедуру,
Сначала откройте Разработчик вкладка>> выбрать Visual Basic
Вы также можете использовать ALT + F11 клавиатуру, чтобы открыть VBA редактор.
Далее откроется окно Microsoft Visual Basic for Applications.
Затем откройте Вставка >> выбрать Модуль .
A Модуль откроется, затем введите следующий код в открывшемся окне Модуль .
Sub Copy_Range_withFormat_AutoFit() Sheets("Dataset").Select Range("B1:E10").Copy Sheets("AutoFit").Select Range("B1").Select ActiveSheet.Paste Columns("B:E").AutoFit End Sub
Здесь я объявил Подпроцедура Copy_Range_withFormat_AutoFit
Сначала я выбрал рабочий лист Набор данных . Затем взял диапазон B1:E10 для копирования с существующего листа на целевой лист с именем AutoFit .
Здесь я использовал Копировать метод для копирования выбранного диапазона и AutoFit метод будет автоподгонять заданные столбцы B:E .
Наконец-то, Сохранить код и вернуться к рабочему листу.
Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов
➤ A диалоговое окно появится.
Теперь из Имя макроса выбрать Copy_Range_withFormat_AutoFit также выберите рабочую книгу внутри Макросы в .
Наконец-то, Запускайте выбранный Макро .
Следовательно, это будет Копировать выбранный диапазон на новый лист, а также AutoFit колонны.
6. VBA Копирование диапазона в другую рабочую книгу
Если вы хотите, вы также можете Копировать диапазон с одного листа на другой лист другой рабочей книги.
Вот, я Копировать диапазон от Набор данных лист на Лист1 из Книга1 рабочая тетрадь.
Давайте начнем процедуру,
Сначала откройте Разработчик вкладка>> выбрать Visual Basic (y вы также можете использовать ALT + F11 клавиатура)
Затем откроется Microsoft Visual Basic for Applications.
Затем откройте Вставка >> выбрать Модуль .
A Модуль откроется, затем введите следующий код в открывшемся окне Модуль .
Sub Copy_Range_WithFormat_Toanother_WorkBook() Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset").Range("B3:E10"). _ Copy Workbooks("Book1").Worksheets("Sheet1").Range("B3") End Sub
Здесь я объявил Подпроцедура Копировать_диапазон_с_форматом_в_другую_рабочую_книгу
Я взял полигон B3:E10 из названия листа Набор данных для копирования с существующего листа в имя новой рабочей книги Книга1 и название листа Лист1 .
Здесь я использовал Копировать метод для копирования выбранного диапазона в новую рабочую книгу.
Наконец-то, Сохранить код и вернуться к рабочему листу.
Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов
➤ A диалоговое окно появится.
Теперь из Имя макроса выбрать Копировать_диапазон_с_форматом_в_другую_рабочую_книгу также выберите рабочую книгу внутри Макросы в .
Наконец-то, Запускайте выбранный Макро .
Теперь это будет Копировать выбранный диапазон из Набор данных лист в другую рабочую книгу.
7. Копирование диапазона в последнюю строку другого листа
В любом случае, если вы хотите Копировать диапазон на другой лист из определенной ячейки или последней ячейки, вы можете сделать это с помощью функции VBA .
Прежде чем приступить к процедуре, я хочу сказать вам, что, я взял два новых листа, состоящих из Полное имя, электронная почта, и Адрес .
Давайте понаблюдаем за Набор данных2 сначала лист.
Вот Ниже последней ячейки лист.
Вот, я Копировать диапазон от Набор данных2 лист на Ниже последней ячейки но с первой незаполненной ячейки.
Для начала откройте Разработчик вкладка>> выбрать Visual Basic
Далее откроется Microsoft Visual Basic for Applications.
Затем откройте Вставка >> выбрать Модуль .
A Модуль откроется, затем введите следующий код в открывшемся окне Модуль .
Sub Copy_Range_BelowLastCell_AnotherSheets() Sheets("Dataset2").Select lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Range("A2:C" & lr).Copy Sheets("Below Last Cell").Select lrAnotherSheet = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Cells(lrAnotherSheet + 1, 1).Select ActiveSheet.Paste Columns("A:C").AutoFit EndSub
Здесь я объявил Подпроцедура Copy_Range_BelowLastCell_AnotherSheets
Сначала я выбрал лист Набор данных2 и затем использовал Строка метод для подсчета Последний ряд и сохранил подсчитанный ряд в lr .
Затем взяли диапазон A2:C & lr для копирования с существующего листа на имя листа назначения Ниже последней ячейки .
Опять же, использовал Строка метод для подсчета Последний ряд другого листа с именем Ниже последней ячейки и сохранил подсчитанный ряд в lrAnotherSheet .
Здесь я использовал Копировать метод для копирования выбранного диапазона и AutoFit метод будет автоподгонять заданные столбцы A:C .
Наконец-то, Сохранить код и вернуться к рабочему листу.
Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов
➤ A диалоговое окно появится.
Теперь из Имя макроса выбрать Copy_Range_BelowLastCell_AnotherSheets также выберите рабочую книгу внутри Макросы в .
Наконец-то, Запускайте выбранный Макро .
Следовательно, это будет Копировать выбранный диапазон и будет Паста его из последней строки другого листа.
8. VBA Копирование диапазона в последнюю строку другой рабочей книги
Если вы хотите Копировать диапазон в последнюю строку другого листа рабочей книги, вы также можете использовать функцию VBA .
Вот, я Копировать диапазон от Набор данных2 лист на Лист1 из Книга2 но с первой незаполненной ячейки.
Чтобы начать процедуру,
Сначала откройте Разработчик вкладка>> выбрать Visual Basic
Вы также можете использовать ALT + F11 клавиатуры, чтобы открыть VBA редактор.
Далее откроется новое окно Microsoft Visual Basic for Applications.
Оттуда откройте Вставка >> выбрать Модуль .
A Модуль откроется, затем введите следующий код в открывшемся окне Модуль .
Sub Copy_Range_BelowLastCell_To_Another_Workbook() Dim wsCopy As Worksheet Dim wsDestination As Worksheet Dim lCopyLastRow As Long Dim lDestLastRow As Long Set wsCopy = Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset2") Set wsDestination = Workbooks("Book2.xlsx").Worksheets("Sheet1") lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row lDestLastRow =wsDestination.Cells(wsDestination.Rows.Count, "A").End(xlUp).Offset(1).Row wsCopy.Range("A2:C" & lCopyLastRow).Copy wsDestination.Range("A" & lDestLastRow) End Sub
Здесь я объявил Подпроцедура Копировать_диапазон_ниже_последней_ячейки_в_другую_рабочую_книгу где wsCopy и wsDestination являются Рабочий лист тип, lCopyLastRow и lDestLastRow являются Длинный тип.
Во-первых, использовали Установите чтобы задать переменные для листа для копирования и листа назначения.
Далее, использовали Строка метод для поиска последней строки на основе данных столбца A в диапазоне копирования.
Опять же, использовал Строка метод поиска первой пустой строки на основе данных столбца A в диапазоне назначения также используется Смещение переехать на одну недвижимость.
Наконец-то, Скопировано данные о Набор данных2 лист из Excel VBA Копирование диапазона на другой лист.xlsm рабочую книгу в место назначения Лист1 трудовая книжка Book2.xlsx .
Сейчас, Сохранить код и вернуться к рабочему листу.
Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов
➤ A диалоговое окно появится.
Теперь из Имя макроса выбрать Копировать_диапазон_ниже_последней_ячейки_в_другую_рабочую_книгу также выберите рабочую книгу внутри Макросы в .
Наконец-то, Запускайте выбранный Макро .
Следовательно, это будет Копировать выбранный диапазон из существующего листа в последнюю строку другой рабочей книги.
Практическая секция
Я предоставил в рабочей тетради лист для отработки этих объясненных способов работы с Excel VBA копирование диапазона на другой лист.
Заключение
В этой статье я рассказал о 8 различных типах простых и быстрых способов Excel VBA копировать диапазон на другой лист. Эти различные способы помогут вам скопировать диапазон с одного листа на другой, а также с одного листа в другую рабочую книгу. И последнее, но не менее важное: если у вас есть какие-либо предложения, идеи и отзывы, пожалуйста, не стесняйтесь оставлять комментарии ниже.