任意の印刷範囲に対応できるコードに変更する場合

印刷範囲を設定して印刷プレビューを表示する場合に、印刷範囲を汎用的に使用できるようにするには、

最初に、マクロ記録を利用して、マクロの記録を開始します。

1.選択したセル範囲を印刷範囲に設定後、「ページ設定」ダイアログボックスで、印刷「拡大縮小印刷」で「次のページに合わせて印刷を選択します。
2.次に印刷プレビューを表示します
3.最後に印刷範囲設定を解除します。
4.マクロの記録を終了します。



1.マクロの記録で、記録されたコード 2.不要なコードを削除すると
Sub 印刷範囲の印刷()      
'
' 印刷範囲の印刷 Macro               
' マクロ記録日 : 2003/11/10 ユーザー名 : yip   
'

'
With ActiveSheet.PageSetup
 .PrintTitleRows = ""
 .PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = "$A$1:$Q$16"
With ActiveSheet.PageSetup

 .LeftHeader = ""
 .CenterHeader = ""
 .RightHeader = ""
 .LeftFooter = ""
 .CenterFooter = ""
 .RightFooter = ""
 .LeftMargin = Application.InchesToPoints(0.787)
 .RightMargin = Application.InchesToPoints(0.787)
 .TopMargin = Application.InchesToPoints(0.984)
 .BottomMargin = Application.InchesToPoints(0.984)
 .HeaderMargin = Application.InchesToPoints(0.512)
 .FooterMargin = Application.InchesToPoints(0.512)
 .PrintHeadings = False
 .PrintGridlines = False
 .PrintComments = xlPrintNoComments
 .PrintQuality = 300
 .CenterHorizontally = False
 .CenterVertically = False
 .Orientation = xlPortrait
 .Draft = False
 .PaperSize = xlPaperA4
 .FirstPageNumber = xlAutomatic
 .Order = xlDownThenOver
 .BlackAndWhite = False
 .Zoom = False
 .FitToPagesWide = 1

 .FitToPagesTall = 1
 PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.SelectedSheets.PrintPreview

ActiveSheet.PageSetup.PrintArea = ""

Range("A18").Select


End Sub
’マクロ名

 ’コメント





「シート」タブ




「ヘッダー・フッター」タブ





「余白」タブ

「シート」タブ

「余白」タブ



「ページ」タブ

「シート」タブ

「ページ」タブ


「シート」タブ

「ページ」タブ


「シート」タブ


Sub 印刷範囲の印刷()  









ActiveSheet.PageSetup.PrintArea = "$A$1:$Q$16"
With ActiveSheet.PageSetup

PrintAreaプロパティは、印刷対象となるセル範囲を指定します。






















.Zoom = False
.FitToPagesWide = 1

End With
ActiveWindow.SelectedSheets.PrintPreview

シートを印刷プレビュー表示する。
ActiveSheet.PageSetup.PrintArea = ""
印刷範囲をクリアーする。「””」
Range("A18").Select


End Sub
3.汎用的に利用出来るようにコードを手直ししたコード(印刷範囲の設定箇所を汎用的に使用できるように、書き換えます。)
Sub 印刷範囲の印刷()  


ActiveSheet.PageSetup.PrintArea = Selection.Address
With ActiveSheet.PageSetup

.Zoom = False
.FitToPagesWide = 1

End With

ActiveWindow.SelectedSheets.PrintPreview
ActiveSheet.PageSetup.PrintArea = ""
Range("A18").Select
End Sub
変更箇所は、一箇所だけです。


Selection.Addressを指定することで可変のセル範囲に対応することが出来るようになります。

指定範囲が1ページに収まるように設定しています。
Zoom→「拡大・縮小」オプション
FitToPagesWide=横方向
FitToPagesTall=縦方向




印刷範囲をクリアする。
選択を解除する。"A18"は、印刷範囲以外ならどこでもかまいません。

●「Address」プロパティで、参照範囲を文字列で取得する。
  Addressは、セルの参照範囲を文字列で、取得する時などに利用する、値の参照のみが可能ななプロパティです。
  Addressプロパティには、5つの引数がありますが、いずれも省略可能です。

  セル.Address(行絶対参照、列絶対参照、参照形式、外部参照、開始点) 


※1 ActiveWindow.SelectedSheets.PrintPreview・・・・アクティブシートの中で選択されているシート全てをさします。
  
Activesheet.PrintPreview・・・・・・・・・・・・・・・・・・・にすると選択されているシートを指します。

  直接印刷する場合は、PrintPreviewの代わりに「PrintOut」メソッドを使用します。
※2 「sheet1」シートを印刷プレビュー表示して印刷するには
   Worksheets("sheet1").PrintOut Preview:=Trueとなります。

Withステートメント

上記の印刷範囲のマクロで使用されている、Withステートメントを使用すると、記述を省略することが出来ます。

Withステートメントを使わない場合 Withステートメントを使えば、下記のように記述を省略できます。
ActiveSheet.PageSetup.Zoom = False
ActiveSheet.PageSetup.FitToPagesWide = 1

With ActiveSheet.PageSetup

Zoom = False
FitToPagesWide = 1

End With

Withステートメントは、
「With」で始まり「End With」で終了します。

VBAで、改ページを設定する。 78

水平方向又は、垂直方向だけに改ページを挿入するマクロ

Sub 水平改ページ挿入

  ActiveSheet.HPageBreaks.Add _
     Before:=ActiveCell

End Sub
Sub 垂直改ページ挿入

  ActiveSheet.VPageBreaks.Add _
     Before:=ActiveCell

End Sub
HPageBreaks又は、VPageBreaksは、印刷範囲内でシートに挿入されている水平及び垂直の改ページを扱うことの出来るコレクションです。

Addメソッドを使うことで、新しい水平方向の改ページ又は、垂直方向の改ページを追加することが出来ます。