Vba 将图纸内容复制到其他图纸

Vba 将图纸内容复制到其他图纸,vba,excel,Vba,Excel,我想把一张纸的内容复制到另一张纸的末尾,我试过这个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

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

但我想要的是复制,而不必指定数据的范围,因为我有很多文件和数据,很难手动完成所有这些,每次都更改范围a。

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

下面将把
表B
中的全部内容复制到
表A

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

复制时不需要选择单元格。

不需要使用太多的
select
,这会减慢代码的速度,您可以使用下面的1行将
工作表(“B”)
的全部内容复制到
工作表(“A”)
中“A”列的第一个空行


是的,确实如此,那将很难。因此VBA提供了变量的概念。在这里了解他们。或者,如果您没有指定单元格,那么应该复制哪些单元格?您想将所有单元格复制到另一张工作表吗?@ErdemAkkas是的,我想将所有单元格复制到另一张工作表,如果我没有指定范围,它会给我一个错误。这实际上会使工作表(A)中的数据过多。这很有效,我有一个问题,要使用另一个文件中的工作表并复制它,我应该更改什么?@zenami您指的是
Sheets(“B”)
?或者
Sheets(“A”)
?我想将工作表(1)的内容从文件1复制到工作表(1)的文件2,而不覆盖现有内容data@zenami我回家后会再看的。真的,我的错误,我已经改正了。这个想法主要是为了说明如何获得最后一行。有像usedrange这样的替代品,但我发现它有点不可预测,到目前为止,以上这些对我来说都是可行的
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