Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11全般 : Excel 2021)
複数のシートを同時に印刷
投稿日時: 24/02/15 22:57:43
投稿者: アロー

回答お願い致します
 
シート1のセルA3、A4、A5に任意の文字を入力しています。
例えば
A3にエンピツ、A4に黒色、A5に10本
のような形です。
 
このセルに入力した文字と、シート名が一致したシートを印刷したいと思っています。
上記だと、シート名がエンピツ、シート名が黒色、シート名が10本のシートが印刷となります。
セルに入力した文字がシート名の検索値になるようなイメージで、一致したシート名の3つを同時に印刷したいです。
 
印刷ボタンを作成して、動作出来ればと思っています。
 
よろしくお願い致します。
 
 
 
 

回答
投稿日時: 24/02/16 08:00:15
投稿者: simple

コードを受け取るというよりも、ヒントを元にトライしてください。
「Q&A 掲示板ご利用上のお願い」を参照ください。(禁止事項)
https://www.moug.net/faq/kiyaku.html#link4
 
こちらのサイトに即効テクニックというTips集があります。結構参考になります。
https://www.moug.net/tech/exvba/
差し当たって、下記のものが参考になるでしょう。
(1)
「複数シートの選択(配列を使用する)」
https://www.moug.net/tech/exvba/0040032.html
このなかで、シート名が予め指定したものかどうかの判定する部分は、
Application.Matchで指定文字列のセル範囲を検索し、
その返り値をIsError関数で判定(エラーなら非該当)すればよいでしょう。
(2)
別のシート確認方法があります。
指定した文字列を元に、シートを直接参照してみて、
それが実在かどうか確認する方法です。

    For Each r In Worksheets("Sheet1").Range("A3:A5")
        Set ws = Nothing
        On Error Resume Next
        Set ws = Worksheets(r.Value)
        On Error GoTo 0
        If Not ws Is Nothing Then   'シートが存在
            If p = 0 Then
                ws.Select
                p = p + 1
            Else
                ws.Select False     'シートを継続して選択
            End If
        End If
    Next
# 変数の宣言をあえて省略しています。読み解いて補足して下さい。
シートの選択は下記参照。
「複数シートの選択(引数にFalseを指定する)」
https://www.moug.net/tech/exvba/0040026.html
(3)
「選択されているシートを印刷する」
https://www.moug.net/tech/exvba/0040011.html
フッターに ページ番号/ページ総数 などを印刷する関係などで、各シートではなく、ということでしたら、
ActiveWindow.SelectedSheets.PrintOut
でよいと思います。

回答
投稿日時: 24/02/16 10:59:12
投稿者: WinArrow

ページ設定は、シート毎に設定します
複数シートを同時に印刷する場合、
考えておく必要があるのは、
各シートの「ページ番号」と、「全体のページ数(印刷する場合のみ)」です。
「ぺージ番号」に「自動」を指定すると、前のシートのページ番号からの連続番号となります。
「全体のページ数」は、印刷する全ページ数です。シート毎の総ページ数ではありません。
印刷順序は、左から順番になります。(順序変更はできません)
 
この条件は手操作でも、マクロでも同じです。

投稿日時: 24/02/16 21:43:18
投稿者: アロー

御二方、回答有り難うございます。
 
参考のコードを少し変更して、無事に思うような動作が出来ました。
この度は有り難うございました。