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

时间:2016-02-29 12:31:01

标签: excel vba macros

根据我的要求,要简短而甜蜜,我需要一个代码来执行以下条件。

  1. 从范围A2中选择:G5
  2. 然后检查以当前日期命名的工作表i:e 29-02-2016
  3. 如果是, 然后复制粘贴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
    

1 个答案:

答案 0 :(得分:2)

尝试这些修改。

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]键逐步执行修改过程以观察它如何处理抛出的错误,并继续退出或处理具有三行偏移的粘贴。