2017-05-01 6 views
1

以下のコードを作成してポイントに達したら、実行時エラー1004が発生します。エラーダイアログボックスに「Rangeクラスの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

あなた自身を理解したので、範囲をコピーしてからPasteSpecialを使用する必要があります。そのため、with-blockの前に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 
-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 

同様

+0

!私はそれを逃した!驚くべきことを見落とすことができます:) – peterreed

0

は、しかし - 私は、インベントリ内の印刷領域にコピー範囲を追加することで行うことができます...あなたは私がその仕事をするために追加する必要があるだろう何を知っていますか?私は自分でそれを使って遊んだことがあるのですが、まだそれを罵倒していません...

+0

基本的に範囲をコピーするのを忘れてしまった。それはあなたの答えです。右? – Masoud

+0

正しい。あなたがそれを追加するのを手助けすることができれば、それはすばらしいでしょう。 – peterreed

+0

私は真剣にあなたのコメントとあなたの答えの最後の段落によって何を意味するのか理解しようとするのは苦労している。私はあなたが何か難しいと思っていません。あなた自身を表現できる場合にのみ、助けを得るでしょう。 – Masoud

関連する問題