首页 文章

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

提问于
浏览
2

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

  • 从范围A2:G5中选择

  • 然后检查以当前日期命名的工作表i: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

1 回答

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

相关问题