我需要一个Excel VBA代码来复制粘贴一系列单元格

我需要一个Excel VBA代码来复制粘贴一系列单元格,excel,vba,macros,Excel,Vba,Macros,为了满足我的要求,我需要一个代码来满足以下条件 从范围A2:G5中选择 然后检查是否有一张以当前日期命名的表格,即:e 29-02-2016 如果是, 然后复制粘贴A1中的范围,在下面留下3行,以便下一个数据粘贴到该范围下。 如果没有,, 创建一个新的工作表,用当前日期命名,然后复制粘贴A1中的范围,在下面留下3行,以便下一个数据粘贴到该范围下 我尝试了下面的代码,但一旦创建了当前日期表,它就会给我错误 Sub Macro1() Sheets("Sheet1").Select

为了满足我的要求,我需要一个代码来满足以下条件

  • 从范围A2:G5中选择
  • 然后检查是否有一张以当前日期命名的表格,即:e 29-02-2016
  • 如果是, 然后复制粘贴A1中的范围,在下面留下3行,以便下一个数据粘贴到该范围下。 如果没有,, 创建一个新的工作表,用当前日期命名,然后复制粘贴A1中的范围,在下面留下3行,以便下一个数据粘贴到该范围下

    我尝试了下面的代码,但一旦创建了当前日期表,它就会给我错误

    Sub Macro1()
    
        Sheets("Sheet1").Select
        Range("D3:G12").Select
        Selection.Copy
        sheets = "todaysdate".select
        Dim todaysdate As String
        todaysdate = Format(Date, "dd-mm-yyyy")
    AddNew:
        Sheets.Add , Worksheets(Worksheets.Count)
        ActiveSheet.Name = todaysdate
        On Error GoTo AddNew
        Sheets(todaysdate).Select
        Range("A1048576").Select
        Selection.End(xlUp).Select
        ActiveCell.Offset(3, 0).Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
    End Sub
    

    试试这些修改

    Sub Macro1()
        Dim todaysdate As String
    
        With Worksheets("Sheet1")
            .Range("D3:G12").Copy
        End With
    
        todaysdate = Format(Date, "dd-mm-yyyy")
    
        On Error GoTo AddNew
        With Worksheets(todaysdate)
            On Error GoTo 0
            With .Cells(Rows.Count, "A").End(xlUp).Offset(3, 0)
                .PasteSpecial Paste:=xlPasteValues
                .PasteSpecial Paste:=xlPasteFormats
            End With
        End With
    
        Exit Sub
    AddNew:
        With Worksheets.Add(after:=Sheets(Sheets.Count))
            .Name = todaysdate
            With .Cells(Rows.Count, "A").End(xlUp)
                .PasteSpecial Paste:=xlPasteValues
                .PasteSpecial Paste:=xlPasteFormats
            End With
        End With
    End Sub
    
    使用[F8]键逐步完成修改后的过程,观察它如何处理抛出的错误,并继续退出或处理具有三行偏移量的粘贴