复印及;使用可变图纸名称粘贴对象需要vba

复印及;使用可变图纸名称粘贴对象需要vba,vba,excel,Vba,Excel,我有一份有两张数据的报告。一个被称为2018年7月26日,另一个则全部待定。当我打开报告时,只有2018年7月26日可见,我希望使用vba代码将2018年7月26日的数据复制并粘贴到所有待定数据中,从A列到N列 每次运行此报告时,我都需要将工作表名称更改为我正在处理的日期。因此,如果我明天继续工作,我需要将工作表名称更改为7.27.2018,并将数据粘贴到所有待定选项卡中。本质上,我使用2018年7月26日表格中的新数据保留所有待处理记录 现在,我不知道如何将工作表名称设置为一个变量,以便复制和

我有一份有两张数据的报告。一个被称为2018年7月26日,另一个则全部待定。当我打开报告时,只有2018年7月26日可见,我希望使用vba代码将2018年7月26日的数据复制并粘贴到所有待定数据中,从A列到N列

每次运行此报告时,我都需要将工作表名称更改为我正在处理的日期。因此,如果我明天继续工作,我需要将工作表名称更改为7.27.2018,并将数据粘贴到所有待定选项卡中。本质上,我使用2018年7月26日表格中的新数据保留所有待处理记录

现在,我不知道如何将工作表名称设置为一个变量,以便复制和粘贴结果,因此对于
ws3
,我得到了一个
objectrequired
错误。有没有办法绕过它

Sub Main()
ActiveSheet.Name = Format(Date, "M.DD.YYYY")
Worksheets("All Pending").Visible = xlSheetVisible
Dim ws3, ws4 As Worksheet
Dim LR3, LR4 As Long
Set ws3 = Worksheet.Name(Date)
Set ws4 = Worksheets("All Pending")
LR3 = ws3.Cells(Rows.Count, "A").End(xlUp).Row
LR4 = ws4.Cells(Rows.Count, "A").End(xlUp).Row
ws3.Range("A2:N" & LR3).Copy
ws4.Range("A" & LR4 + 1).PasteSpecial Paste:=xlPasteValues
End Sub
工作表。名称(日期)
不是您要查找的语法,因为:

  • 您需要
    工作表
    集合,就像下一行一样-
    …=工作表(“所有待定”)
  • 您已经将
    Date
    格式化为“M.DD.YYY”,因此,如果您想通过其名称引用工作表,则不能仅使用
    Date
    。您也不会使用
    .Name
    ——下一行再次向您展示了如何通过名称引用工作表——在本例中是
    工作表(格式(日期,“M.DD.YYYY”)
  • 最简单的方法就是在开始时
    设置ws3=ActiveSheet
    ,因为您也在使用
    ActiveSheet
    重命名有问题的工作表

    请注意,对于变量声明,
    Dim ws3,ws4作为工作表
    ws3
    声明为
    变量
    -您应该将
    Dim ws3作为工作表,ws4作为工作表
    。下一行也是如此

    下面是对原始代码的修订:

    Sub Main()
        Dim ws3 As Worksheet, ws4 As Worksheet
        Dim LR3 As Long, LR4 As Long
    
        Set ws3 = ActiveSheet
        Set ws4 = Worksheets("All Pending")
    
        ws3.Name = Format(Date, "M.DD.YYYY")
        ws4.Visible = xlSheetVisible ' Not really necessary, as you mentioned
    
        LR3 = ws3.Cells(Rows.Count, "A").End(xlUp).Row
        LR4 = ws4.Cells(Rows.Count, "A").End(xlUp).Row
    
        ws3.Range("A2:N" & LR3).Copy
        ws4.Range("A" & LR4 + 1).PasteSpecial Paste:=xlPasteValues
    End Sub
    

    在开始时,
    设置ws3=ActiveWorksheet
    ?请注意,
    Dim ws3,ws4 as Worksheet
    ws3
    声明为
    Variant
    -您需要执行
    Dim ws3 as Worksheet,ws4 as Worksheet
    。下一行也一样。我想我不需要取消隐藏所有挂起的工作表来进行复制和粘贴,所以我总是将工作表设置为活动工作表,然后在设置
    ws3
    activeworksheet
    时这样做。我将添加更多解释作为答案。好的。再次感谢您。谢谢您的详细解释。这有助于我更好地理解代码。