エクセルで印刷の位置がずれたり、用紙からはみ出たり、必要ないページが印刷されたりして困ったことありませんか?
特に共有プリンターや複数プリンターが選択できる場合、さらに共有パソコンともなると、よくある日常です。
ここでは上下左右の余白をVBAで指定して、意図した位置で印刷できるようにします。
ページの余白を設定する
余白の設定は、エクセルのワークシートから「ファイル」➡「印刷」➡「ページ設定」➡「余白」の順に進むと設定できますが、VBAを使ってエクセルを管理しているのでついでに設定しておいて損は無いですよ。
いつものようにユーザーフォームに配置したコマンドボタンに余白無し「0」の設定を書いています。
ポイント単位で余白を上下左右0設定
Private Sub CommandButton1_Click()
With ActiveSheet.PageSetup
.TopMargin = (0)
.BottomMargin = (0)
.LeftMargin =(0)
.RightMargin = (0)
End With
End Sub
- コマンドボタン1がクリックされたら
- 現在表示中のシートのページ設定をする
- 上の余白を0ptにする
- 下の余白を0ptにする
- 左の余白を0ptにする
- 右の余白を0ptにする
- Withステートメント終了
- マクロ記録終了
センチ単位で余白を上下左右0設定
余白無しの0ならば、ポイント単位だろうがセンチ単位だろうが変わりませんが、余白を少しでも必要ならばポイント単位よりもセンチ単位の方が分かりやすいので、下記のようにApplication.CentimetersToPointsを付け加えればセンチ単位になります。
Private Sub CommandButton1_Click()
With ActiveSheet.PageSetup
.LeftMargin = Application.CentimetersToPoints(0)
.RightMargin = Application.CentimetersToPoints(0)
.TopMargin = Application.CentimetersToPoints(0)
.BottomMargin = Application.CentimetersToPoints(0)
End With
End Sub

印刷のページ設定をVBAで出来るのは用紙だけではありませんので、一緒に設定したほうが失敗印刷すなくて済みますよ。