Как я могу скопировать и вставить динамический диапазон в Excel? - PullRequest
0 голосов
/ 02 мая 2019

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

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

Workbooks.Open Filename:=OOBmap

'Copies AM open order book and pastes it into master spreadsheet

Set startCell = ActiveSheet.Range("A1")
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
lastColumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
ActiveSheet.Range(Cells(1, lastRow), Cells(1, lastColumn)).Select
Selection.Copy

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Если вы хотите, чтобы весь диапазон от A1 до нижнего правого, использовали это

ActiveSheet.Range(Cells(1, 1), Cells(lastrow, lastColumn)).Copy

Если вы просто хотите, чтобы последний столбец использовал

ActiveSheet.Range(Cells(1, lastColumn), Cells(lastrow, lastColumn)).Copy

Cells Синтаксис строка, затем столбец, вы их перепутали.

Плюс вам не нужно выбирать перед копированием.

Очевидно, что копирование само по себе ничего не даст, тогда вам нужновставить куда-нибудь.

0 голосов
/ 02 мая 2019

Для вставки необходим диапазон назначения:

Option Explicit
Sub CopyPaste()

    Dim wsSource As Worksheet, wbDestination As Workbook, wsDestination As Worksheet, LastRow As Long, lastColumn As Long

    Set wbDestination = Workbooks.Open(Filename:=OOBmap, ReadOnly:=True)
    Set wsSource = ThisWorkbook.Sheets("Name") 'change Name for the name of the worksheet you are copying from
    Set wsDestination = wbDestination.Sheets("Name") 'change Name for the name of the worksheet you are copying to

'Copies AM open order book and pastes it into master spreadsheet
    With wsSource
        LastRow = .Cells(.Count, 1).End(xlUp).Row
        lastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
        .Range(Cells(1, LastRow), Cells(1, lastColumn)).Copy wsDestination.Range("A1") 'here the range were u want to paste
    End With

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