我想在另一张纸的末尾复制一张纸的内容,我试过这个vba代码并且它可以正常工作,
Private Sub CommandButton1_Click()
Sheets("B").Select
Range("A1:H14").Select
Range("A1:H14").Copy
Sheets("A").Select
' Find the last row of data
Range("B48:I48").Select
ActiveSheet.Paste
Sheets("A").Select
End Sub
但我想要的是复制而不必指定数据的范围,因为我有很多文件和许多数据,并且很难手动完成所有这些并且每次更改范围。
答案 0 :(得分:0)
我通常会这样做,假设sheet1是要通过sheet2中的数据更新的工作表;
dim destLen as Long 'rows used in sheet 1
dim sourceLen as Long 'rows used in sheet 2
打开包含源文件的目录并遍历每个文件并执行以下操作
destLen = Sheet1.Range("A"&Rows.Count).End(xlUp).Row
sourceLen = Sheet2.Range("A"&Rows.Count).End(xlUp).Row
Sheet2.Range("B1" & ":I" & sourceLen).copy
Sheet1.Range("A" & destLen + 1).pasteSpecial xlValues
Application.CutCopyMode = False
答案 1 :(得分:0)
下面会将Sheet B
中的所有内容复制到Sheet A
Sheets("B").Cells.Copy Destination:=Sheets("A").Range("A1")
复制时无需选择单元格。
答案 2 :(得分:0)
没有必要使用这么多Select
,这会减慢代码速度,您可以使用下面的1行将Sheet("B")
的全部内容复制到第一个空行专栏" A"在Sheet("A")
。
Dim Rng As Range
Dim lRow As Long
Dim lCol As Long
Dim lPasteRow As Long
With Sheets("B")
lRow = .Cells.Find(What:="*", _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
lCol = .Cells.Find(What:="*", _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
lPasteRow = Sheets("A").Cells.Find(What:="*", _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
.Range(.Cells(1, 1), .Cells(lRow, lCol)).Copy Destination:=Sheets("A").Range("A" & lPasteRow + 1)
End With