条件に合ったシートを一括印刷

1ブック内に複数のシートを用意して一括で印刷することはありませんか?
ブック全体なら、非表示シートを除いて印刷してくれます。
マクロの記録で、「ブック全体」を選んで印刷してみます。
「ブック全体」を選んで印刷
すると、

    ActiveWorkbook.PrintOut Copies:=1, Collate:=True
という1行だけのマクロが記録されます。 これを利用すれば、ブック内の非表示シートを除く全シートに一連のページ番号を割り振って印刷させることができます。

    ActiveWorkbook.Worksheets.PrintOut
でも間違いとは言えませんが、この書き方では非表示シートまで印刷しようとしてしまうので、非表示シートがあると実行時エラーになってしまいます。 ブックで印刷させる場合は、非表示シートを条件から除いてくれるようです。

「一連のページ番号」というのは、ページ設定の「ヘッダー・フッター」で、
ページ設定のヘッダー・フッター
このように、「ページ番号」や「総ページ数」を設定している場合は、1回の印刷行為の中の一連ページ番号や総ページ数が割り振られて印刷されます。
ですから、

    Dim objSh As Worksheet              ' 処理シート
    For Each objSh In ActiveWorkbook.Worksheets
        objSh.PrintOut                  ' ※印刷
    Next objSh
このような記述で印刷させた場合は、シートごとにページ番号は「1」から振り直されてしまいます。
非表示シートの問題であれば、ブックで印刷すれば済むことですが、 これだけでは「つまらない」のでブック内に何かの条件を付けて、条件にあったシートだけを選択してページ番号を割り振って印刷させる方法として説明します。
方法としては、「Worksheets」指定する「シート名」に、条件にあったシート名の配列を与えて印刷することです。

'***************************************************************************************************
'   ワークブックの全シートを印刷サンプル                            Module1(Module)
'
'   作成者:井上治  URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev  変更履歴内容------------------------------------------------------------------------>
'03/06/07(1.00)新規作成
'20/02/23(1.10)記述標準化準拠修正(サンプルブック無し)
'***************************************************************************************************
Option Explicit

'***************************************************************************************************
'   ■■■ ワークシート側からの呼び出し処理 ■■■
'***************************************************************************************************
'* 処理名 :PrintAllSheet
'* 機能  :ワークブックの全シートを印刷
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年06月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Sub PrintAllSheet()
    '-----------------------------------------------------------------------------------------------
    Dim objSh As Worksheet                                          ' 処理シート
    Dim tblSh As Variant                                            ' 表示シートの配列を格納
    Dim lngIx As Long                                               ' テーブルINDEX
    lngIx = 0
    ReDim tblSh(lngIx)
    ' 表示シートをテーブルに格納
    For Each objSh In ActiveWorkbook.Worksheets
        ' 表示されているか
        If objSh.Visible = xlSheetVisible Then
            ReDim Preserve tblSh(lngIx)
            tblSh(lngIx) = objSh.Name
            lngIx = lngIx + 1
        End If
    Next objSh
    ' 取得したシート配列を印刷
'    Worksheets(tblSh).PrintOut              ' ※印刷
    Worksheets(tblSh).PrintPreview          ' ※プレビュー
End Sub

'***************************************************************************************************
'* 処理名 :PrintAllSheet2
'* 機能  :ワークブックの全シートを印刷②
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年06月07日
'* 作成者 :井上 治
'* 更新日 :2020年02月23日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Sub PrintAllSheet2()
    '-----------------------------------------------------------------------------------------------
    Dim objSh As Worksheet                                          ' 処理シート
    Dim tblSh As Variant                                            ' 表示シートの配列を格納
    Dim lngIx As Long                                               ' テーブルINDEX
    lngIx = 0
    ReDim tblSh(lngIx)
    ' 表示シートをテーブルに格納
    For Each objSh In ActiveWorkbook.Worksheets
        ' 表示されているか
        If objSh.Visible = xlSheetVisible Then
            ReDim Preserve tblSh(lngIx)
            tblSh(lngIx) = objSh.Name
            lngIx = lngIx + 1
        End If
    Next objSh
    ' 取得したシート配列を選択して印刷ダイアログを表示
    Worksheets(tblSh).Select
    Application.Dialogs(xlDialogPrint).Show
End Sub

'----------------------------------------<< End of Source >>----------------------------------------
PrintAllSheet2」の方では、選択シートを印刷する状態で「印刷」のダイアログが表示されるので、 印刷させるプリンタを選択したり、印刷ではなく印刷プレビューを選択したりすることができます。