合并两个宏

时间:2018-11-22 14:14:39

标签: excel vba excel-vba

我有一个包含原始数据的工作表,称为“原始数据”,我想将此数据复制到另一个名为“数据”的工作表中。

在“原始数据”中,我有一个名为“ RawTab1”的命名范围 在“数据”中,我有一个名为“ DataTable”的表,我要在其中粘贴“ RawTab1”范围内的数据,但不粘贴“ RawTab1”范围内的前两行

在粘贴RawTab1中的新数据之前,A已经使此宏清除了DataTable中的数据:

    Dim sht As Worksheet
    Set sht = ThisWorkbook.Worksheets("Data")
        Range("A3:M3", sht.Range("A3:M3").End(xlDown)).ClearContents
    End Sub

这是将RawTab1范围中的数据复制到DataTable中的宏

  Sub CopyRawTab1()
Application.Goto Reference:="RawTab1"
Selection.Copy
Sheets("Data").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
End Sub

所以我的问题是:

  1. 如何合并这两个宏?
  2. 如何避免不将RawTab1的前两行粘贴到DataTable中?

1 个答案:

答案 0 :(得分:1)

应该类似于以下内容:

Option Explicit

Public Sub Combined()
    Dim sht As Worksheet
    Set sht = ThisWorkbook.Worksheets("Data")
    sht.Range("A3:M3", sht.Range("A3:M3").End(xlDown)).ClearContents

    With Worksheets("Raw Data").Range("RawTab1")
        'copy everything from RawTab1 but not the first 2 rows
        .Resize(RowSize:=.Rows.Count - 2).Offset(RowOffset:=2).Copy
    End With

    sht.Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub

请注意,在复制之前,我结合使用了Range.Resize propertyRange.Offset property来删除RawTab1范围的第一行到第二行。