VBA Копирование данных из одной рабочей книги в другую с использованием диапазонов lastrow - PullRequest
1 голос
/ 10 июля 2019

У меня есть кнопка на листе со сводной таблицей в книге под названием «Шаблон гарантии.xlsm».Я хочу, чтобы эта кнопка скопировала первый столбец данных, который начинается с A5, и вставила этот столбец в другую книгу под названием «QA Matrix Template.xlsm».Я хочу, чтобы скопированные данные заканчивались последней пустой строкой столбца, и я хочу, чтобы диапазон, в который они вставляются, также вставлялся в первую пустую строку, начиная с D12.

Sub InsertData()


Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopyLastRow As Long
Dim lDestLastRow As Long

  'Set variables for copy and destination sheets
  Set wsCopy = Workbooks("Warranty Template.xlsm").Worksheets("PivotTable")
  Set wsDest = Workbooks("QA Matrix Template.xlsm").Worksheets("Plant Sheet")

  '1. Find last used row in the copy range based on data in column A
  lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A5").End(xlUp).Row

  '2. Find first blank row in the destination range based on data in column A
  'Offset property moves down 1 row
  lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "D12").End(xlUp).Offset(1).Row

  '3. Copy & Paste Data
  wsCopy.Range("A5" & lCopyLastRow).Copy _
    wsDest.Range("D12" & lDestLastRow)

End Sub

ЯПолучение ошибки: 1004, и я не уверен, почему.Это связано с моими переменными lCopyLastRow & lDestLastRow.Код работает, если я устанавливаю статические диапазоны, но мне нужно, чтобы эти диапазоны были динамическими.

1 Ответ

2 голосов
/ 10 июля 2019
Sub InsertData()

Dim wsCopy As Worksheet, wsDest As Worksheet
Dim lCopyLastRow As Long, lDestLastRow As Long

'Set variables for copy and destination sheets
Set wsCopy = Workbooks("Warranty Template.xlsm").Worksheets("PivotTable")
Set wsDest = Workbooks("QA Matrix Template.xlsm").Worksheets("Plant Sheet")

'1. Find last used row in the copy range based on data in column A
lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, 1).End(xlUp).Row

'2. Find first blank row in the destination range based on data in column A
'Offset property moves down 1 row
lDestLastRow = wsDest.Cells(wsDest.Rows.Count, 4).End(xlUp).Offset(1,0).Row

'3. Copy & Paste Data
wsCopy.Range("A5:A" & lCopyLastRow).Copy _
wsDest.Range("D" & lDestLastRow)

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...