последняя вся строка не копируется на другой лист - PullRequest
0 голосов
/ 04 июля 2019

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

Dim lrow As Long

With Worksheets("101")
    lrow = .Range("B" & .Rows.Count).End(xlUp).Row
    .Range("B" & lrow - 1, "M" & lrow).Copy
    Worksheets("EOM").Range("B4").PasteSpecial xlPasteAll
End With

с этим кодом выдает ошибку

Dim shRead As Worksheet
Set shRead = ThisWorkbook.Worksheets("101")

Dim lastRow As Long, lastCol As Long
lastRow = shRead.Cells(shRead.Rows.Count, 2).End(xlUp).Row
lastCol = shRead.Cells(lastRow, shRead.Columns.Count).End(xlToLeft).Column

With shRead
    shRead.Range(lastRow, lastCol).Copy_
      Worksheets("EOM").Range(B4, M4)
End With

ошибка при

shRead.Range(lastRow, lastCol).Copy_

1 Ответ

0 голосов
/ 04 июля 2019

Вместо вашего кода

With shRead
  shRead.Range(lastRow, lastCol).Copy_
  Worksheets("EOM").Range(B4, M4)
End With

Вы должны указать начальную и конечную ячейку для диапазона

With shRead
    .Range(.Cells(lastRow, 1), .Cells(lastRow, lastCol)).Copy Worksheets("EOM").Range("B4")
End With

для пункта назначения, на который должна ссылаться ячейкабыть в двойных кавычках

РЕДАКТИРОВАТЬ

Вы можете использовать код, подобный приведенному ниже;для получения данных со всех рабочих листов необходим цикл, вы можете изменить код в соответствии с вашими требованиями

Dim i As Integer 
i = 4

For Each ws In ActiveWorkbook.Worksheets 
    With ws
        lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
        lastCol = .Cells(lastRow, .Columns.Count).End(xlToLeft).Column

        .Range(.Cells(lastRow, 1), .Cells(lastRow, lastCol)).Copy Worksheets("EOM").Range("B" & i)
         i = i + 1
     End With
 Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...