我已经创建了下面的代码,然后我得到了一个运行时错误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),则此代码有效,但如果可能,我想复制并粘贴打印区域。
答案 0 :(得分:1)
喜欢这个
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
但是 - 我可以将复制的范围添加到清单中的打印区域...你知道我必须添加什么才能使其工作吗?我自己玩过它,但还没有怀疑......但是......
答案 1 :(得分:1)
正如您自己想出的那样,您需要复制范围,然后使用PasteSpecial
。因此,在您的阻止之前添加rngPrintArea.Copy
。
稍后,如果您要将最近粘贴的单元格添加到"Inventory"
工作表中的打印区域,那么您需要:
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
答案 2 :(得分:-1)
没有代码表明正在复制某些内容。如果你添加一行来复制,它看起来就可以了。