Vba excel вставить скопированную ячейку

Вырезание, перемещение, копирование и вставка ячеек (диапазонов) в VBA Excel. Методы Cut, Copy и PasteSpecial объекта Range, метод Paste объекта Worksheet.

Метод Range.Cut

Range.Cut – это метод, который вырезает объект Range (диапазон ячеек) в буфер обмена или перемещает его в указанное место на рабочем листе.

Синтаксис

Параметры

Параметры Описание
Destination Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен (перемещен) вырезанный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект вырезается в буфер обмена.

Для вставки на рабочий лист диапазона ячеек, вырезанного в буфер обмена методом Range.Cut, следует использовать метод Worksheet.Paste.

Метод Range.Copy

Range.Copy – это метод, который копирует объект Range (диапазон ячеек) в буфер обмена или в указанное место на рабочем листе.

Синтаксис

Параметры

Параметры Описание
Destination Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен скопированный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект копируется в буфер обмена.

Метод Worksheet.Paste

Worksheet.Paste – это метод, который вставляет содержимое буфера обмена на рабочий лист.

Синтаксис

Worksheet.Paste (Destination, Link)

Метод Worksheet.Paste работает как с диапазонами ячеек, вырезанными в буфер обмена методом Range.Cut, так и скопированными в буфер обмена методом Range.Copy.

Параметры

Параметры Описание
Destination Необязательный параметр. Диапазон (ячейка), указывающий место вставки содержимого буфера обмена. Если этот параметр не указан, используется текущий выделенный объект.
Link Необязательный параметр. Булево значение, которое указывает, устанавливать ли ссылку на источник вставленных данных: True – устанавливать, False – не устанавливать (значение по умолчанию).

В выражении с методом Worksheet.Paste можно указать только один из параметров: или Destination, или Link.

Для вставки из буфера обмена отдельных компонентов скопированных ячеек (значения, форматы, примечания и т.д.), а также для проведения транспонирования и вычислений, используйте метод Range.PasteSpecial (специальная вставка).

Примеры

Вырезание и вставка диапазона одной строкой (перемещение):

Range(«A1:C3»).Cut Range(«E1»)

Вырезание ячеек в буфер обмена и вставка методом ActiveSheet.Paste:

Range(«A1:C3»).Cut

ActiveSheet.Paste Range(«E1»)

Копирование и вставка диапазона одной строкой:

Range(«A18:C20»).Copy Range(«E18»)

Копирование ячеек в буфер обмена и вставка методом ActiveSheet.Paste:

Range(«A18:C20»).Copy

ActiveSheet.Paste Range(«E18»)

Копирование одной ячейки и вставка ее данных во все ячейки заданного диапазона:

Range(«A1»).Copy Range(«B1:D10»)


Содержание

  1. Метод Range.Insert (Excel)
  2. Синтаксис
  3. Параметры
  4. Возвращаемое значение
  5. Примечания
  6. Пример
  7. Поддержка и обратная связь
  8. Способы VBA работы с ячейками Excel
  9. Копировать и вставить: наиболее распространенное действие Excel
  10. Вставить данные ниже последней заполненной строки
  11. VBA Excel. Метод Range.PasteSpecial (специальная вставка)
  12. Метод Range.PasteSpecial
  13. Синтаксис
  14. Параметры специальной вставки
  15. Константы XlPasteType
  16. Константы XlPasteSpecialOperation
  17. Примеры
  18. VBA Excel. Буфер обмена (копирование, вставка, очистка)
  19. Копирование и вставка ячеек
  20. Буфер обмена и переменная
  21. Объект DataObject
  22. Копирование текста из переменной в буфер обмена
  23. Копирование текста из буфера обмена в переменную
  24. Очистка буфера обмена
  25. Функции для работы с буфером обмена
  26. 8 комментариев для “VBA Excel. Буфер обмена (копирование, вставка, очистка)”
  27. 3 Ways to Copy and Paste Cells with VBA Macros + Video
  28. Copy & Paste: The Most Common Excel Action
  29. Video #1: The Simple Copy Paste Method
  30. Video #2: An Easy Way to Paste Values
  31. Video #3: The PasteSpecial Method Explained
  32. VBA Code for the Copy & Paste Methods
  33. Paste Data Below the Last Used Row
  34. Free Training on Macros & VBA
  35. You may also like
  36. How to Search Data Validation Drop-down Lists in Excel
  37. Go To Source Cell of XLOOKUP Formula
  38. 3 Ways to Fill Down Blank Cells in Excel
  39. VBA Macro to Create Power Query Connections for All Excel Tables
  40. 201 comments
  41. Cancel reply

Метод Range.Insert (Excel)

Вставляет ячейку или диапазон ячеек в лист или лист макросов и перемещает другие ячейки в сторону, чтобы освободить место.

Синтаксис

expression. Insert (SHIFT, CopyOrigin)

выражение: переменная, представляющая объект Range.

Параметры

Имя Обязательный или необязательный Тип данных Описание
Shift Необязательный Variant Определяет способ сдвига ячеек. Может быть одной из следующих констант XlInsertShiftDirection : xlShiftToRight или xlShiftDown. Если этот аргумент опущен, Microsoft Excel принимает решение на основе формы диапазона.
CopyOrigin Необязательный Variant Источник копирования; то есть, откуда копировать формат для вставленных ячеек. Может быть одной из следующих констант XlInsertFormatOrigin : xlFormatFromLeftOrAbove (по умолчанию) или xlFormatFromRightOrBelow.

Возвращаемое значение

Примечания

Для параметра CopyOrigin нет значения, эквивалентного значению Clear Formatting при вставке ячеек в Excel в интерактивном режиме. Для этого используйте метод ClearFormats .

Пример

В этом примере вставляется строка над строкой 2, копируя формат из строки ниже (строка 3), а не из строки заголовка.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Способы VBA работы с ячейками Excel

Итог: Изучите 3 различных способа копирования и вставки ячеек или диапазонов в Excel с помощью макросов VBA. Это серия из трех частей, также вы сможете скачать файл, содержащий код.

Уровень мастерства: Начинающий

Копировать и вставить: наиболее распространенное действие Excel

Копирование и вставка, вероятно, является одним из самых распространенных действий в Excel. Это также одна из самых распространенных задач, которые мы автоматизируем при написании макросов.

Есть несколько различных способов выполнить эту задачу, и устройство записи макросов не всегда дает вам наиболее эффективный код VBA.

В следующих трех видео я объясняю:

  • Самый эффективный метод для простого копирования и вставки в VBA.
  • Самый простой способ вставить значения.
  • Как использовать метод PasteSpecial для других типов вставок.

Видео № 1: Простой метод «Копировать-вставить»

Видео лучше всего просматривать в полноэкранном HD.

Видео № 2: Простой способ вставить значения

Видео № 3: Метод PasteSpecial

Вставить данные ниже последней заполненной строки

Один из самых распространенных вопросов, которые я получаю о копировании и вставке с помощью VBA: «Как мне вставить данные в конец таблицы? «

Сначала нужно найти последнюю заполненную строку данных, а затем скопировать и вставить ниже неё.

Источник

VBA Excel. Метод Range.PasteSpecial (специальная вставка)

Специальная вставка (метод PasteSpecial объекта Range) применяется в VBA Excel для вставки ячеек из буфера обмена с учетом заданных параметров.

Метод Range.PasteSpecial

Синтаксис

Специальная вставка работает только с данными ячеек, скопированными в буфер обмена методом Range.Copy. При попытке применить метод Range.PasteSpecial к ячейкам, вырезанным в буфер обмена методом Range.Cut, возникает ошибка.

Параметры специальной вставки

Список параметров метода Range.PasteSpecial:

Параметры Описание
Paste Необязательный параметр. Константа из коллекции XlPasteType, указывающая на часть данных вставляемого диапазона, которую следует вставить. По умолчанию вставляются все данные.
Operation Необязательный параметр. Константа из коллекции XlPasteSpecialOperation, указывающая на математические операции, которые следует провести со скопированными данными и данными в ячейках назначения. По умолчанию вычисления не производятся.
SkipBlanks Необязательный параметр. Булево значение, которое указывает, вставлять ли в конечный диапазон пустые ячейки: True – не вставлять, False – вставлять (значение по умолчанию).
Transpose Необязательный параметр. Булево значение, которое указывает, следует ли транспонировать строки и столбцы при вставке диапазона: True – транспонировать, False – не транспонировать (значение по умолчанию).

Смотрите другой способ транспонировать диапазоны ячеек и двумерные массивы.

Константы XlPasteType

Список констант из коллекции XlPasteType, которые могут быть использованы в качестве аргумента параметра Paste:

Константа Значение Описание
xlPasteAll -4104 Вставка всех данных (по умолчанию).
xlPasteAllExceptBorders 7 Вставка всех данных, кроме границ.
xlPasteAllMergingConditionalFormats 14 Вставка всех данных со слиянием условных форматов исходного и нового диапазонов.
xlPasteAllUsingSourceTheme 13 Вставка всех данных с использованием исходной темы.
xlPasteColumnWidths 8 Вставка ширины столбцов.
xlPasteComments -4144 Вставка комментариев.
xlPasteFormats -4122 Вставка форматов исходного диапазона.
xlPasteFormulas -4123 Вставка формул.
xlPasteFormulasAndNumberFormats 11 Вставка формул и форматов чисел.
xlPasteValidation 6 Вставка правил проверки данных из ячеек исходного диапазона в новый диапазон.
xlPasteValues -4163 Вставка значений.
xlPasteValuesAndNumberFormats 12 Вставка значений и форматов чисел.

Константы XlPasteSpecialOperation

Список констант из коллекции XlPasteSpecialOperation, которые могут быть использованы в качестве аргумента параметра Operation:

Константа Значение Описание
xlPasteSpecialOperationAdd 2 Скопированные данные будут добавлены к значениям в ячейках назначения.
xlPasteSpecialOperationDivide 5 Скопированные данные разделят значения в ячейках назначения.
xlPasteSpecialOperationMultiply 4 Скопированные данные будут перемножены со значениями в ячейках назначения.
xlPasteSpecialOperationNone -4142 Вычисления не выполняются при вставке данных (по умолчанию).
xlPasteSpecialOperationSubtract 3 Скопированные данные будут вычтены из значений в ячейках назначения.

Примеры

Примеры копирования и специальной вставки актуальны для диапазона «A1:B8» активного листа, ячейки которого заполнены числами:

Источник

VBA Excel. Буфер обмена (копирование, вставка, очистка)

Работа с буфером обмена в VBA Excel: копирование и вставка ячеек, копирование текста из переменной, очистка буфера обмена. Объект DataObject. Примеры.

Копирование и вставка ячеек

Копирование содержимого и форматов ячеек (диапазона) в буфер обмена осуществляется методом Range.Copy, а вставка – методом Worksheet.Paste:

При вставке диапазона ячеек из буфера обмена на рабочий лист достаточно указать верхнюю левую ячейку места (диапазона) вставки.

Для вставки из буфера обмена отдельных компонентов скопированных ячеек (значения, формулы, примечания и т.д.), а также применения к диапазону транспонирования или вычислений, используется метод Range.PasteSpecial (специальная вставка).

Буфер обмена и переменная

Передача текста между переменной и буфером обмена в VBA Excel осуществляется с помощью объекта DataObject. Стоит иметь в виду, что на некоторых компьютерах DataObject может некорректно работать при открытом окне проводника.

Объект DataObject

Подробнее об элементе DataObject вы можете прочитать на сайте разработчиков.

Методы объекта DataObject:

Метод Описание
GetFromClipboard Копирует данные из буфера обмена в DataObject
GetText Извлекает текстовую строку из объекта DataObject в указанном формате
PutInClipboard Перемещает данные из DataObject в буфер обмена
SetText Копирует текстовую строку в DataObject, используя указанный формат

Копирование текста из переменной в буфер обмена

Копирование текста из буфера обмена в переменную

Очистка буфера обмена

Специального метода для очистки буфера обмена в VBA Excel нет. Для решения этой задачи можно использовать выход из режима вырезания-копирования:

Следующий пример демонстрирует вставку скопированной ячейки «A1» в ячейки «A2» и «A3» и отсутствие вставки в ячейки «A4» и «A5» после строки Application.CutCopyMode = False :

Оператор On Error Resume Next необходим для обработки (пропуска) ошибки, возникающей при вставке из пустого буфера обмена.

Функции для работы с буфером обмена

В некоторых системах, начиная с Windows 8, метод DataObject.PutInClipboard не работает правильно: если открыт хотя бы один экземпляр Проводника (папка), в буфер обмена записываются два квадратика. Следующие функции должны решить эту проблему:

Пример использования функций для работы с буфером обмена:

8 комментариев для “VBA Excel. Буфер обмена (копирование, вставка, очистка)”

Код — не работает ▼

В А1 вставляется какой-то непечатаемый символ и всё. При переходе к другому приложению и попытке вставить содержимое буфера — фиаско.

Добрый день, Михаил!
Такое встречается, начиная с Windows 8, когда открыта хотя бы одна папка в Проводнике. Я добавил в статью функции для работы с буфером обмена, они должны работать.

В Win 8.1 такой проблемы не наблюдаю, уж по всякому погонял, пытаясь вызвать ошибку — всегда правильно отрабатывает ))
А за статью большое спасибо!

Нашёл такую информацию на случай получения ошибки относительно типа данных DataObject.
Чтобы заработал тип данных «DataObject» нужно подключить инструмент «Microsoft Forms Object Libraries». Для этого необходимо выполнить действия в редакторе макросов Эксель:
1. Открыть Tools/References;
2. Через кнопку Browse открыть файл C:WINDOWSSYSTEM32FM20.DLL. Файл «FM20.DLL» может оказаться в другой подпапке Windows, поискать по названию. Может быть в «SysWOW64» или в «System».

Источник

3 Ways to Copy and Paste Cells with VBA Macros + Video

Bottom line: Learn 3 different ways to copy and paste cells or ranges in Excel with VBA Macros. This is a 3-part video series and you can also download the file that contains the code.

Skill level: Beginner

Copy & Paste: The Most Common Excel Action

Copy and paste is probably one of the most common actions you take in Excel. It’s also one of the most common tasks we automate when writing macros.

There are a few different ways to accomplish this task, and the macro recorder doesn’t always give you the most efficient VBA code.

In the following three videos I explain:

  • The most efficient method for a simple copy and paste in VBA.
  • The easiest way to paste values.
  • How to use the PasteSpecial method for other paste types.

You can download the file I use in these videos below. The code is also available at the bottom of the page.

Video #1: The Simple Copy Paste Method

You can watch the playlist that includes all 3 videos at the top of this page.

Video #2: An Easy Way to Paste Values

Video #3: The PasteSpecial Method Explained

VBA Code for the Copy & Paste Methods

Download the workbook that contains the code.

Paste Data Below the Last Used Row

One of the most common questions I get about copying and pasting with VBA is, how do I paste to the bottom of a range that is constantly changing? I first want to find the last row of data, then copy & paste below it.

To answer this question, I created a free training video on how to paste data below the last used row in a sheet with VBA. Can I send you the video? Please click the image below to get the video.

Free Training on Macros & VBA

The 3 videos above are from my VBA Pro Course. If you want to learn more about macros and VBA then checkout my free 3-part video training series.

I will also send you info on the VBA Pro Course, that will take you from beginner to expert. Click the link below to get instant access.

Please leave a comment below with any questions. Thanks!

You may also like

How to Search Data Validation Drop-down Lists in Excel

Go To Source Cell of XLOOKUP Formula

3 Ways to Fill Down Blank Cells in Excel

VBA Macro to Create Power Query Connections for All Excel Tables

Cancel reply

Hi, I have two workbooks opened (both can be different names) and I want to copy a Range from Workbook1 SheetX (unkown/active) to Workbook2 (where I know the Sheet name)
I even want the command to open the worksheet from a directory too. Do you have any suggestions on how to do this? Hope to hear from you. Many thanks.

Windows(“incident.xlsx”).Activate
Range(“A:U”).Select ‘this trows the error: application-defined or object-deferred error

I need your support, I’m creating a workbook for daily report, and I’m stuck in the summary worksheet, in the VBA I don’t know how to link the information of the new report to be copied in the summary.

Sheets(“REPORTE DIARIO”).Copy After:=Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Shapes.Range(Array(“Button 1”)).Delete
ActiveSheet.Name = Range(“P7”).Value
Application.DisplayAlerts = False
Sheets(“REPORTE DIARIO”).Delete
Application.DisplayAlerts = True

Worksheets(“SUMMARY”).Range(“A6”).Value = ActiveSheet.Name = Range(“P7”).Value.Range(“P7”).Value
Worksheets(“SUMMARY”).Range(“G6”).Value = ActiveSheet.Name = Range(“P7”).Value.Range(“B15”).Value
Worksheets(“SUMMARY”).Range(“H6”).Value = ActiveSheet.Name = Range(“P7”).Value.Range(“D15”).Value
Worksheets(“SUMMARY”).Range(“I6”).Value = ActiveSheet.Name = Range(“P7”).Value.Range(“F15”).Value
Worksheets(“SUMMARY”).Range(“J6”).Value = Worksheets(“REPORTE DIARIO”).Range(“H15”).Value
Worksheets(“SUMMARY”).Range(“K6”).Value = Worksheets(“REPORTE DIARIO”).Range(“J15”).Value
Worksheets(“SUMMARY”).Range(“L6”).Value = Worksheets(“REPORTE DIARIO”).Range(“L15”).Value
Worksheets(“SUMMARY”).Range(“M6”).Value = Worksheets(“REPORTE DIARIO”).Range(“N15”).Value
Worksheets(“SUMMARY”).Range(“N6”).Value = Worksheets(“REPORTE DIARIO”).Range(“P15”).Value

OK I’m having a little trouble making a macro for a project at work. What I need help with: i have one work book and user form on sheet one to fill in information and this user form i have a button that should copy range of cells on sheet2 (S6:S9) to the (L6:L9)(all of this is on sheet2 and the samr thing should happen sheet3 to sheet9. If i could get some help i would be grateful

I have a crunched data in one workbook and wanted paste it in other by using macro. Also the number of line items changes every day (increase or decrease), So help me to copy and pasting the data in main template without number mismatch.

Hello, nice writeup. One quick question- Instead of copying an orderly range of cells from one column, how may we copy multiple single cells & paste them into an orderly horizontal range?

For example copying B2, F9, and Q11 yet pasting them into A1:C1
Thank you!

I am trying to write VBA for the below.
If the value in column AA is =”-” and the value in column AC is $0.00 then copy the value in column X to Column AA. My data set is ever changing so I can not set specific ranges and it may be the case where I don’t have data the satisfies the above criteria.

I have a workbook with a few tabs in it. I want to copy a cell with a formula in it from one worksheet and paste it into a cell in a different worksheet. When I use “PasteSpecial Paste:=xlPasteFormulas” it turns the formula cell references into REF# errors. For example:

LEN(A2)-LEN(SUBSTITUTE(A2,” “,””))=0
becomes
LEN(REF#)-LEN(SUBSTITUTE(REF#,” “,””))=0

It’s pasting the formula into the destination worksheet, but it must think the cell reference is still related to the source worksheet…or something like that. Do you know what could be causing this? Thank you!

Can you tell me how to Cells from Sheets present in 4 or more Workbooks to one Final Workbook?

It would be really helpful.

i have 300+ excel workbooks.
my requirement is copy specific data from all workbooks to another new workbook though VBA, can this possible,

Yes it is possible
Sub Copy()
Dim Sheet1 as worksheet
Dim sheet2 as worksheet
Dim book1 as workbook
Dim book2 as workbook

Workbooks(“Book1.xlsx”).Worksheets(“Sheet1”).Range(“A1”).Copy
Workbooks(“Book2.xlsx”).Worksheets(“Sheet1”).Range(“A1”).PasteSpecial Paste:=xlPasteFormats

will this work to copy a formula and use it on next line?

With a macro I am copying the last row of a table and pasting below as PasteFormulas, but when I do this, it consider the row as a ” total row” of the table. I do it in two different tables and in one it paste it okay but in the other one it considers it as a “Total Row” of the table.

Can you help me?

Dim lastRow1 As Long, erow1 As Long
lastRow1 = Worksheets(“WO_SendM”).Cells(Rows.Count, 1).End(xlUp).Row
For i = 3 To lastRow1

If Worksheets(“WO_SendM”).Cells(i, 9).Value = Me.Label164.Caption Then
Worksheets(“WO_SendM”).Cells(i, 4).Copy
Worksheets(“WO_SendM”).Cells(i, 5).Copy

erow1 = Worksheets(“WO_Ledger”).Cells(Rows.Count, 18).End(xlUp).Row
Worksheets(“WO_SendM”).Paste Destination:=Worksheets(“WO_Ledger”).Cells(erow1 + 1, 18)
End If
Next i

Is it possible to get two cell value 4 and 5 in another cell?

I wanted to maintain a formatting of one of my records. In which I want to copy formats of certain cells to no. of times the user enters this will reduce the time of formatting ( which is a lot for me). Can you please make a video on that plz?

Hi jon,
Thanks for your this tutorial, but i need a urgent help if possible answer to me.

copy and paste only filter cells from one excel to other excel using VBA
excel-vba
I’m stuck with a problem when I try to copy filtered cells from one excel file and paste it onto another file. I am using a macro call to get data where I try to fix this given code. It is not working when I try to copy visible cells which i filtered.
Private Sub CommandButton1_Click()

Dim lrCD As Long
Dim fNameAndPath As Variant
Dim WB As Workbook
Dim SourceWB As Workbook
Dim WS As Worksheet
Dim ASheet As Worksheet
fNameAndPath = Application.GetOpenFilename(FileFilter:=”Excel Files (*.xlsx), *.xlsx”, Title:=”Seleziona il file da aprire”)

‘Sets the variables:
Set WB = ActiveWorkbook
Set ASheet = ActiveSheet
Set SourceWB = Workbooks.Open(fNameAndPath) ‘Modify to match

‘Copies each sheet of the SourceWB to the end of original wb:
For Each WS In SourceWB.Worksheets
WS.Copy after:=WB.Sheets(WB.Sheets.Count)
Next WS

SourceWB.Close savechanges:=False
Set WS = Nothing
Set SourceWB = Nothing

Set ASheet = Nothing
Set WB = Nothing

Application.EnableEvents = True
lastrow = Worksheets(4).Cells(Rows.Count, 1).SpecialCells(xlCellTypeVisible).End(xlUp).Row

For i = 3 To lastrow
Worksheets(4).Cells(i, 16).SpecialCells(xlCellTypeVisible).Copy
erow = Worksheets(“CFF”).Cells(Rows.Count, 1).SpecialCells(xlCellTypeVisible).End(xlUp).Row
Worksheets(4).PasteSpecial xlPasteValues = Worksheets(“CFF”).Cells(erow + 1, 2)
Worksheets(4).Cells(i, 16).SpecialCells(xlCellTypeVisible).Copy
Worksheets(4).PasteSpecial xlPasteValues = Worksheets(“CFF”).Cells(erow + 1, 3)
Worksheets(4).Cells(i, 15).SpecialCells(xlCellTypeVisible).Copy
Worksheets(4).PasteSpecial xlPasteValues = Worksheets(“CFF”).Cells(erow + 1, 4)
Worksheets(4).Cells(i, 12).SpecialCells(xlCellTypeVisible).Copy
Worksheets(4).PasteSpecial xlPasteValues = Worksheets(“CFF”).Cells(erow + 1, 5)
Worksheets(4).Cells(i, 13).SpecialCells(xlCellTypeVisible).Copy
Worksheets(4).PasteSpecial xlPasteValues = Worksheets(“CFF”).Cells(erow + 1, 6)
Worksheets(4).Cells(i, 18).SpecialCells(xlCellTypeVisible).Copy
Worksheets(4).PasteSpecial xlPasteValues = Worksheets(“CFF”).Cells(erow + 1, 1)
Next i

Sheets(4).Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete

End Sub
Thanks in advance

Hey, when you copy a range, there is some copy buffer somewhere in excel, I assume as a manipulatable object in VBA. Is there a way to access this and what’s it called? I want to see if it’s a collection or array, or something that can be split into that- in other words, something that can be iterated over. I don’t want to just paste in one drop. I want to choose which cells I paste based on other criteria.

I have list of unique names of players in column A in sheet 1. And in sheet 2 I have data of cricket score of different matches for that particular player with same unique names. And in sheet 3 I have data of same players for football matches. Now I want to first find the name which is in the sheet 1 from sheet 2 and cut that data from sheet 2 and paste in same row of that particulate player. And find and cut the data from sheet 3 and paste it in sheet 1 on same row in next available cell. Do this task one by one for all players till cell is empty. In some cases I have multiple rows in sheet 2 and sheet 3 for the same name. In that case add a new row under that name and cut paste all the data. And every time I will update the sheet 2 and sheet 3 with the new data with new names which I will add in in sheet 1 too it will update all the data in sheet 1 by clicking a single button.

I have tried lots of thin but still it is not working as I needed. Anybody can help me for this task…..

Источник

 

Delux

Пользователь

Сообщений: 138
Регистрация: 03.11.2014

Здравствуйте. Нужна помощь. Я копирую любой диапазон с данными, и нужно макросом реализовать вставку копируемого диапазона в активную ячейку. Как макросом реализовать «ctrl+v»?

Изменено: Delux30.08.2020 14:18:25

 

Михаил Витальевич С.

Пользователь

Сообщений: 10514
Регистрация: 21.12.2012

#2

30.08.2020 14:22:03

Как вариант:

Код
Range("A1:D10").Copy ActiveCell
 

Delux

Пользователь

Сообщений: 138
Регистрация: 03.11.2014

#3

30.08.2020 14:34:51

Ваш пример подходит для конкретного диапазона. А у меня он может быть разный. Для копирования использую вот такой макрос.

Код
Sub Макрос1
ActiveCell.Rows("1:37").EntireRow.Select
    ActiveCell.Offset(0, 1).Range("A1").Activate
    Selection.Copy
End Sub

и после выполнения моего макроса, нужно выбрать с какой ячейки вставить, и запустить макрос который с эмитирует вставку.

Изменено: Delux30.08.2020 14:35:00

 

Михаил Витальевич С.

Пользователь

Сообщений: 10514
Регистрация: 21.12.2012

#4

30.08.2020 14:48:12

Ну и вопросы сегодня… 8-0
Delux, строка

Код
ActiveCell.Offset(0, 1).Range("A1").Activate

какую функцию выполняет?
Вы думаете, мне, или кому еще, интересно рисовать примеры ваших файлов  :qstn:

 

Delux

Пользователь

Сообщений: 138
Регистрация: 03.11.2014

#5

30.08.2020 15:09:38

Цитата
Михаил Витальевич С. написал: строка… какую функцию выполняет?

Никакую. Вот так должно быть.

Код
Sub Макрос1
ActiveCell.Rows("1:37").EntireRow.Select
    Selection.Copy
End Sub
 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

#6

30.08.2020 15:11:35

Цитата
Delux написал:
Как макросом реализовать «ctrl+v»

отлично видно в записанном макросе:

Код
ActiveSheet.Paste

Изменено: Hugo30.08.2020 15:12:29

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

Delux, копируемый диапазон можно и не выделять. Сразу .Copy.

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

Что вы все copy да copy? «ctrl+v» — это не copy! :)

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

Игорь, а что ctrl+v», если ничего не скопировать перед этим? )
И у меня большие сомнения, что требуется копировать ВСЮ строку.

 

Михаил Витальевич С.

Пользователь

Сообщений: 10514
Регистрация: 21.12.2012

#10

30.08.2020 15:28:52

Цитата
Юрий М написал:
И у меня большие сомнения, что требуется копировать ВСЮ строку.

Если бы одну. А то — 37 (тридцать семь)!

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

#11

30.08.2020 15:33:25

Я только отвечаю на поставленный вопрос, ничего более :)

Цитата
Delux написал:
Как макросом реализовать «ctrl+v»?
и после выполнения моего макроса, нужно выбрать с какой ячейки вставить, и запустить макрос который с эмитирует вставку.

Изменено: Hugo30.08.2020 15:34:35

 

Delux

Пользователь

Сообщений: 138
Регистрация: 03.11.2014

#12

30.08.2020 15:47:56

Hugo, Я правильно Вас понял, что после выполнения моего макроса. Я выбираю ячейку с которой нужно вставить и выполняю, этот макрос?

Код
Sub AQ()
ActiveSheet.Paste
End Sub

То он ругается на «ActiveSheet.Paste».

Изменено: Delux30.08.2020 15:48:01

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

Да. И ничего не ругается, проверено. Скопировал в буфер, выбрал ячейку, выполнил макрос.

Изменено: Hugo30.08.2020 16:15:08

 

Delux

Пользователь

Сообщений: 138
Регистрация: 03.11.2014

А почему тогда ругается на «ActiveSheet.Paste»?

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

 

Delux

Пользователь

Сообщений: 138
Регистрация: 03.11.2014

Вот пример. Выдаёт ошибку. На «A7», встаньте запустите макрос «Копи». И потом встаньте на любую после «A44», и запустите макрос «Встав»

Прикрепленные файлы

  • 654.xlsm (19.19 КБ)

 

Mershik

Пользователь

Сообщений: 8277
Регистрация: 03.12.2015

Delux, и? все работает

Не бойтесь совершенства. Вам его не достичь.

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

И ничего не ругнулось…
Хотя не ругается если выполнять из редактора, если по Alt+F8 то ругается. Потому что так буфер слетает.
А если выполнять например по кнопке или из редактора — всё отрабатывает.
Сделайте себе две кнопки где-то на панели и работайте.
Вот добавил, см. вверху слева чёрные треугольнички.

Прикрепленные файлы

  • 654H.xlsm (19.61 КБ)

Изменено: Hugo30.08.2020 16:39:54

 

Delux

Пользователь

Сообщений: 138
Регистрация: 03.11.2014

Hugo, спасибо, я и не знал, что если «Alt+F8» вызывать то будет ругаться. А так я Ваш вариант давно уже попробовал. Теперь буду знать))).

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

#20

30.08.2020 16:58:05

Так видно ведь — как открываешь Alt+F8 так сразу «муравьи» пропадают, и даже без запуска макроса буфер пустой, не работает даже стандартное Ctrl+V

Bottom line: Learn 3 different ways to copy and paste cells or ranges in Excel with VBA Macros.  This is a 3-part video series and you can also download the file that contains the code.

Skill level: Beginner

3 Ways to Copy and Paste in Excel with VBA Macros

Copy & Paste: The Most Common Excel Action

Copy and paste is probably one of the most common actions you take in Excel.  It’s also one of the most common tasks we automate when writing macros.

There are a few different ways to accomplish this task, and the macro recorder doesn’t always give you the most efficient VBA code.

In the following three videos I explain:

  • The most efficient method for a simple copy and paste in VBA.
  • The easiest way to paste values.
  • How to use the PasteSpecial method for other paste types.

You can download the file I use in these videos below.  The code is also available at the bottom of the page.

Video #1: The Simple Copy Paste Method

You can watch the playlist that includes all 3 videos at the top of this page.

Video #2: An Easy Way to Paste Values

Video #3: The PasteSpecial Method Explained

VBA Code for the Copy & Paste Methods

Download the workbook that contains the code.

'3 Methods to Copy & Paste with VBA
'Source: https://www.excelcampus.com/vba/copy-paste-cells-vba-macros/
'Author: Jon Acampora

Sub Range_Copy_Examples()
'Use the Range.Copy method for a simple copy/paste

    'The Range.Copy Method - Copy & Paste with 1 line
    Range("A1").Copy Range("C1")
    Range("A1:A3").Copy Range("D1:D3")
    Range("A1:A3").Copy Range("D1")
    
    'Range.Copy to other worksheets
    Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet2").Range("A1")
    
    'Range.Copy to other workbooks
    Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Copy _
        Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1")

End Sub


Sub Paste_Values_Examples()
'Set the cells' values equal to another to paste values

    'Set a cell's value equal to another cell's value
    Range("C1").Value = Range("A1").Value
    Range("D1:D3").Value = Range("A1:A3").Value
     
    'Set values between worksheets
    Worksheets("Sheet2").Range("A1").Value = Worksheets("Sheet1").Range("A1").Value
     
    'Set values between workbooks
    Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1").Value = _
        Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value
        
End Sub


Sub PasteSpecial_Examples()
'Use the Range.PasteSpecial method for other paste types

    'Copy and PasteSpecial a Range
    Range("A1").Copy
    Range("A3").PasteSpecial Paste:=xlPasteFormats
    
    'Copy and PasteSpecial a between worksheets
    Worksheets("Sheet1").Range("A2").Copy 
    Worksheets("Sheet2").Range("A2").PasteSpecial Paste:=xlPasteFormulas
    
    'Copy and PasteSpecial between workbooks
    Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Copy
    Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteFormats
    
    'Disable marching ants around copied range
    Application.CutCopyMode = False

End Sub

Paste Data Below the Last Used Row

One of the most common questions I get about copying and pasting with VBA is, how do I paste to the bottom of a range that is constantly changing?  I first want to find the last row of data, then copy & paste below it.

To answer this question, I created a free training video on how to paste data below the last used row in a sheet with VBA.  Can I send you the video?  Please click the image below to get the video.

Paste Data Below Last Used Row VBA Free Training

Free Training on Macros & VBA

The 3 videos above are from my VBA Pro Course.  If you want to learn more about macros and VBA then checkout my free 3-part video training series.

I will also send you info on the VBA Pro Course, that will take you from beginner to expert.  Click the link below to get instant access.

Free Training on Macros & VBA

Please leave a comment below with any questions.  Thanks!

На чтение 3 мин. Просмотров 51.6k.

Итог: Изучите 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 способам поиска последней заполненной ячейки

Понравилась статья? Поделить с друзьями:
  • Vba excel вставить символ в строку
  • Vba excel вставить примечание
  • Vba excel вставить перенос строки
  • Vba excel вставить новую строку
  • Vba excel вставить несколько столбцов