2017-01-04 9 views
0

ブック内のすべてのシートを通過するループがあります。次に、選択されたボタンに印刷領域を設定します。 1つのボタンはCol A、もう1つのCol C ...などで開始するように設定します。.PageSetup.PrintAreaはActivesheet上でのみ動作しますか?

しかし、実行時エラー1004が表示されています。これは、式を間違って入力したことを示しています。イミディエイトウィンドウを使用して、印刷領域が私が望むものであることをテストできます。

With sheet 
    If .Name <> "Index" Then 
    Set rEnd = .Columns("A").Find("END", .[A8], xlValues, xlWhole, xlByRows, xlNext) 
    If rEnd Is Nothing Then 
     'Not Found - leave as is 
    Else 
     'Found 
     .PageSetup.PrintArea = "$" & sCol & "&8:$R$" & rEnd.Row '<---Fails here 
     SetZoom sheet, "Report Print """ & sCol & """ Scale" 
    End If 
    End If 
End With 

私がオンラインで見たすべての例では、ActiveSheetを使用しています。 .PageSetup.PrintAreaにはActiveSheetが必要ですか?私はむしろ各シートを活性化する必要はありません。あなたが代わりに.PageSetup.Printareaラインのこれを使用する場合がありますので、実際に印刷範囲を設定する

+0

「sCol」の宣言が見えないので、それは正しいですか? – BruceWayne

+0

はい、そうです。それは渡され、End.Rowは正しい終了行を見つけます。 – Rdster

答えて

1

これは私に有効になりますPrintArea。周囲の引用符を追加し、余分なアンパサンドを削除しました。

.PageSetup.PrintArea = "" & "$" & sCol & "8:$R$" & rEnd.Row & "" 
+0

ええと、8の前に&が見えなかった... $に変えて、うまくいきました。 – Rdster

1

は、Print_Areaと呼ばれるシートレベルの定義名を追加することと同じです。

   .Range("$" & sCol & "$8:$R$" & rEnd.Row).Name = "'" & .Name & "'!Print_Area" 
関連する問題