复制范围直到lastRow并粘贴到另一个工作表中
我目前使用下面的代码来复制粘贴范围,但是一旦数据被粘贴,它会创build一个非常大的文件,我怎样才能修改这个复制粘贴直到最后一个活动行? 或者是由于其他因素而导致文件变大? 新来VB,任何帮助将不胜感激。
Private Sub CommandButton1_Click() Dim WB1 As Workbook Dim WB2 As Workbook Set WB1 = ActiveWorkbook Set WB2 = Workbooks.Open(WB1.Path & "\RawData.xlsm") WB1.Sheets("CR Details").Columns("A:AW").Value = WB2.Sheets("sheet1").Columns("A:AW").Value WB2.Close End Sub
你的问题的简短答案是:
Private Sub CommandButton1_Click() Dim WB1 As Workbook Dim WB2 As Workbook Dim LastRow As Long Set WB1 = ActiveWorkbook Set WB2 = Workbooks.Open(WB1.Path & "\RawData.xlsm") With WB1.Sheets("CR Details") 'Find the last cell's row with data in any column '(You can also use ".Cells(Rows.Count, 1).End(xlUp).row") LastRow = .Range("A:AW").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row 'Copy the values WB2.Sheets("sheet1").Range("A1", "AW" & LastRow) = .Range("A1", "AW" & LastRow).Value End With WB2.Close End Sub
更详细的解释:
查找最后使用的行的一个非常常见的代码片段是使用:
(将使用列A查找上次使用的行)
Dim LastRow as Long With ThisWorkbook.Sheets("CR Details") LastRow = .Cells(Rows.Count, 1).End(xlUp).row End With
将“1”更改为您要查找的列号。
要查找range("A:AW")
中任何列中最后使用的单元格的行,则需要如下所示的内容:
Dim LastRow as Long With ThisWorkbook.Sheets("CR Details").Range("A:AW") LastRow = .Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row End With
而已。 罗恩·德·布因(Ron de Buin)有一个很好的解释。 答案也可以在Stack Overflow上find。
文件大小是使用整个列的结果。 这个链接涵盖了一些查找数据范围的方法。 在你的sub你可以这样做:
Private Sub CommandButton1_Click() Dim WB1 As Workbook Dim WB2 As Workbook Set WB1 = ActiveWorkbook Set WB2 = Workbooks.Open(WB1.Path & "\RawData.xlsm") 'Find the last row with data With WB1.Sheets("CR Details") LastRow = .Range("A" & .Rows.Count).End(xlUp).Row End With WB1.Sheets("CR Details").Range("A1:AW" & LastRow).Copy WB2.Sheets("sheet1").Range("A1").PasteSpecial xlPasteValues WB2.Close End Sub