【问题标题】:last entire row is not copy to other sheet最后一整行不复制到其他工作表
【发布时间】:2019-07-05 14:07:53
【问题描述】:

我尝试将最后一整行复制到另一张纸上,但失败了 使用这种方法,它只会将单个单元格复制到所有行

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_

【问题讨论】:

  • 下划线.Copy _前必须有一个空格。 • 并且Range(lastRow, lastCol) 应该是Cells(lastRow, lastCol)。 • 并且Range(B4, M4) 必须是Range("B4", "M4")
  • @Pᴇʜ 先生,感谢您抽出宝贵时间,但这并没有尝试过。

标签: excel vba


【解决方案1】:

代替你的代码

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

【讨论】:

  • 非常感谢先生。这个修正案奏效了。先生,我们可以在单个命令按钮的帮助下从多张纸中获取最后一行吗?再次,先生,我很高兴先生
  • 亲爱的@UsmanAshfaq 我已更新代码以从多个工作表中获取数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多