将表单内容复制到另一个表单

我想复制另一张纸的内容,我已经试过这个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 

但我想要的是复制,而不必指定数据的范围,因为我有很多文件和许多数据,这将是很难做的手动,每次改变范围。

您可以使用下面的1行来将Sheet("B")的全部内容复制到Sheet("B")中的列“A”的第一个空行上,而不需要使用太多的Select来减慢代码的速度。 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 

下面将把Sheet B全部内容复制到Sheet A

 Sheets("B").Cells.Copy Destination:=Sheets("A").Range("A1") 

复制时不需要select单元格。

我通常做这样的事情,假设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