Vba 复制打印区域并粘贴到另一张图纸时出现宏错误

Vba 复制打印区域并粘贴到另一张图纸时出现宏错误,vba,excel,Vba,Excel,我已经创建了下面的代码,该代码工作到一定程度,然后我得到一个运行时错误1004。有人能帮忙吗?错误对话框显示“范围类的PasteSpecial方法失败”,并突出显示第一行.PasteSpecial Sub CopyPO() ' ' CopyPO Macro ' ' Dim rngPrintArea As Range Set rngPrintArea = ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea) With Sheets("I

我已经创建了下面的代码,该代码工作到一定程度,然后我得到一个运行时错误1004。有人能帮忙吗?错误对话框显示“范围类的PasteSpecial方法失败”,并突出显示第一行.PasteSpecial

Sub CopyPO()
'
' CopyPO Macro
'

'
   Dim rngPrintArea As Range
   Set rngPrintArea = ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea)
With Sheets("Inventory").Range("A" & Rows.Count).End(xlUp).Offset(1)
    .PasteSpecial Paste:=xlPasteColumnWidths
    .PasteSpecial Paste:=xlPasteValues
    .PasteSpecial Paste:=xlPasteFormats
End With
End Sub

为了澄清,我试图复制活动工作表的打印区域,并将其粘贴到库存工作表的下一个可用单元格中。如果范围是特定的单元格范围(即A1:P55),则此代码有效,但如果可能,我希望复制并粘贴打印区域。

没有代码指示正在复制某些内容。如果您添加了一行要复制的内容,看起来就可以了。

像这样

Sub CopyPO()

' CopyPO Macro

   Dim rngPrintArea As Range
   Set rngPrintArea = ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea)
   rngPrintArea.Copy
   With Sheets("Inventory").Range("A" & Rows.Count).End(xlUp).Offset(1,0)
        .PasteSpecial xlPasteColumnWidths
        .PasteSpecial xlPasteValues
        .PasteSpecial xlPasteFormats
   End With
End Sub

但是-我可以将复制的范围添加到库存中的打印区域。。。你知道我需要补充什么才能让它起作用吗?我自己也玩过,但还没用过…

正如你自己想的那样,你需要复制范围,然后使用
PasteSpecial
。因此,在with块之前添加
rngPrintArea。复制

稍后,如果要将最近粘贴的单元格添加到
“库存”
工作表的打印区域,则需要:

Sub CopyPO()

   Dim rngPrintArea As Range
   Dim newRange As Range

   Set rngPrintArea = ActiveSheet.Range(ActiveSheet.PageSetup.PrintArea)
   rngPrintArea.Copy

   With Sheets("Inventory").Range("A" & Rows.Count).End(xlUp).Offset(1,0)
    .PasteSpecial xlPasteColumnWidths
    .PasteSpecial xlPasteValues
    .PasteSpecial xlPasteFormats
   End With

  Set newRange = Sheets("Inventory").Range(ActiveSheet.PageSetup.PrintArea)

  'If you want print area to be only the recent pasted range change the following line _
  'to commented line below;

  Set newRange = newRange.Resize(newRange.Rows.Count + _
                 rngPrintArea.Rows.Count, newRange.Columns.Count)

  'Set newRange = Sheets("Inventory").Range("A" & Rows.Count).End(xlUp).Offset(1,0). _
   'Resize(rngPrintArea.Rows.Count,rngPrintArea.Columns.Count)

  Sheets("Inventory").PageSetup.PrintArea = newRange.Address

End Sub

! 我错过了!令人惊讶的是,你可以忽略:)基本上忘记了复制范围。这就是你的答案。对吧?对。如果你能帮我把它也添加到打印区,那就太棒了。我真的很难弄明白你的评论和答案的最后一段是什么意思。我想你不想要硬的东西。只有你能表达自己,你才能得到帮助。@Masoud-我的意思是,粘贴后,我想将复制的单元格添加到打印区域。正如您所说的不太难,我想我已经通过在结尾之前添加ActiveSheet.PageSetup.PrintArea=rngPrintArea解决了这个问题。但效果并不理想。是否将它们添加到
库存
工作表的打印区域?如果是,我将发布一个答案。