将工作表内容复制到另一个工作表

时间:2017-04-18 09:30:56

标签: excel vba excel-vba

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

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

3 个答案:

答案 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