手動で印刷範囲を指定する方法
まず手動で設定するときの手順です。
エクセルの「ページ設定」は下の手順で開きます。
ファイル⇒印刷⇒ページ設定の順に開きます。
ページ設定ウィンドウの中には「ページ」「余白」「ヘッダー/フッター」「シート」のタブがあります。

この一番右の「シート」タブの一番上にある「印刷範囲」を設定することで指定が可能です。

もしくは、シート上で印刷範囲を設定したい範囲をドラッグし、「ページレイアウト」タブの「印刷範囲」から「印刷範囲の設定」を選択することで設定することも可能です。

マクロで印刷範囲を指定する方法
マクロで印刷範囲を指定する方法を説明します。
印刷範囲を設定するときはVBA関数の「PageSetup.PrintArea」を使用して指定します。
下のサンプルでは1行目~20行目までを印刷範囲に指定して印刷します。
表の範囲はもっと下までありますが、赤枠の部分だけを印刷するようにします。

サンプルマクロで実行している内容
①プリンタ接続をオフにする
②ページ設定を行う
③印刷範囲をA1セル~D20セルに設定する
④プリンタ接続をオンにする
Sub sample1()
'プリンタ接続をオフにする…⓵
Application.PrintCommunication = False
'ページ設定を行う…⓶
With ActiveSheet.PageSetup
'印刷範囲を設定する…⓷
.PrintArea = "A1:D20"
End With
'プリンタ接続をオンにする…⓸
Application.PrintCommunication = True
End Sub
マクロ実行前と実行後のページ設定画面の状態です。
設定後は印刷範囲欄に「A1:D20」がセットされています。

マクロ実行後の印刷プレビューの画面です。
指定した範囲が印刷範囲に設定されていることが分かります。

印刷範囲の指定に変数を使用する方法
印刷範囲の指定に変数を使用する場合は、Rangeの中にCellsで開始・終了の範囲を指定する方法を使用します。最後に「Address」を付けるところがポイントです。
サンプルマクロで実行している内容
①印刷範囲の最大行数を変数にセット(20をセット)
②印刷範囲の最大列数を変数にセット(4をセット)
③プリンタ接続をオフにする
④ページ設定を行う
⑤印刷範囲を設定する:1行目1列目のセル~20行目4列目のセルまでの範囲をセット
⑥プリンタ接続をオンにする
Sub sample1()
Dim MaxRow As Integer
Dim MaxColumn As Integer
'印刷範囲の最大行数をセット…⓵
MaxRow = 20
'印刷範囲の最大列数をセット…⓶
MaxColumn = 4
'プリンタ接続をオフにする…⓷
Application.PrintCommunication = False
'ページ設定を行う…⓸
With ActiveSheet.PageSetup
'印刷範囲を設定する…⓹
.PrintArea = ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(MaxRow, MaxColumn)).Address
End With
'プリンタ接続をオンにする…⓺
Application.PrintCommunication = True
End Sub
この場合も印刷範囲を確認するとA1~D20までがセットされます。

印刷範囲に最終行・最終列を設定する方法
印刷範囲をシートの最終行・最終列を取得して範囲に使用する方法について説明します。
最終行と最終列を取得する方法は別の記事で詳しく説明していますが次のように記述します。
下のサンプル表の場合は2行目にヘッダーがあるため、最終列の取得は2行目を指定しています。
最終列の取得は1列目(A列)の最終列を取得してセットしています。

サンプルマクロで実行している内容
①1列目の最終行を取得して変数にセットする
②2行目の最終列を取得して変数にセットする
③プリンタ接続をオフにする
④ページ設定を行う
⑤印刷範囲を設定する:1行目1列目のセル~最終行・最終列のセルまでの範囲をセット
⑥プリンタ接続をオンにする
Sub sample1()
Dim MaxRow As Integer
Dim MaxColumn As Integer
'最終行を取得して変数にセットする…⓵ ※1列目の最終行をセット
MaxRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row
'最終列を取得して変数にセットする…⓶ ※2行目の最終列数をセット
MaxColumn = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).column
'プリンタ接続をオフにする…⓷
Application.PrintCommunication = False
'ページ設定を行う…⓸
With ActiveSheet.PageSetup
'印刷範囲を設定する…⓹
.PrintArea = ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(MaxRow, MaxColumn)).Address
End With
'プリンタ接続をオンにする…⓺
Application.PrintCommunication = True
End Sub
マクロ実行前と実行後のページ設定画面の状態です。
設定後は印刷範囲欄に「A1:D51」がセットされています。

マクロで印刷範囲の設定をクリアする方法
印刷範囲の設定をクリア(リセット)する方法について説明します。
手動で印刷範囲をクリアする場合は↓のボタンを実行することでクリアされます。

マクロで印刷範囲の設定をクリアしたい場合は「PrintArea」に「””」を指定するか「False」を指定することでクリアされます。
マクロを実行する前と実行後のページ設定画面の変化です。
印刷範囲設定が空になっていることが分かります。

※コードのコピー利用について
・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。