• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA 複数シートを指定回数印刷)

EXCEL VBAで複数シートを指定回数印刷する方法

このQ&Aのポイント
  • Excel VBAを使用して、複数のシートを指定回数印刷する方法を教えてください。
  • 質問者は、管理シートの商品番号と商品番号シートの関係を分かりやすくするために、黄色で塗りつぶしています。商品番号が不規則にブランクがある場合は、読み飛ばしたいとのことです。
  • また、管理シートの商品番号と商品番号シートの順番は一致しないため、管理シートの商品番号を順にチェックするたびに全シートを毎回読み込む必要があるかと思われます。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

続けてお邪魔します。 >もしB列と同じ名称のシート名がなかったら「処理を中止します・・・ というより、スルーするようにしてみました。 (B列にあるSheetのみ印刷する) Private Sub CommandButton1_Click() Dim i As Long, k As Long, str As String, myFlg As Boolean For i = 5 To Cells(Rows.Count, "B").End(xlUp).Row If Cells(i, "B") <> "" And Cells(i, "D") > 0 Then str = Cells(i, "B") For k = 1 To Worksheets.Count If Worksheets(k).Name = str Then myFlg = True Exit For End If Next k If myFlg = True Then If MsgBox(str & "シートを" & Cells(i, "D") + 1 & "部印刷しますか?", vbYesNo) = vbYes Then Worksheets(str).PrintOut copies:=Cells(i, "D") + 1 End If End If End If myFlg = False Next i End Sub こんな感じではどうでしょうか?m(_ _)m

yakkun2338
質問者

お礼

tom04さん、早速のご連絡ありがとうございます! ご教授いただきましたロジックで出来ました!! 本当に助かりました! これで会社から依頼された通りの仕組みが出来ました。 いつもいつも本当にありがとうございます!!

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 >インデックスが有効範囲にありません おそらくSheetが存在しないためのエラーだと思います。 前回のコードはB列がSheet名になっているという前提のコードですので、 そうでない場合は他の方法でSheetを指定する方法が必要になります。 この程度しかお答えできないのですが、 各Sheetを指定できる材料があれば具体的なコードも提示できると思います。m(_ _)m

yakkun2338
質問者

補足

tom04さん、おはようございます。 またまたご連絡ありがとうございました! tom04さんが仰る通り、B列と同じ名称のSheetが存在していないためのエラーでした。 もしB列と同じ名称のシート名がなかったら「処理を中止します」といった感じで処理を中止にするようなロジックは可能でしょうか? 何度も申し訳ございませんがよろしくお願い致します。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 「管理シート」のB列がSheet名と解釈して良いのですかね? そういうコトだとしての一例です。 「管理シート」にコマンドボタンを配置し、それをクリックするとします。 ↓のコードにしてみてください。 Private Sub CommandButton1_Click() Dim i As Long, str As String For i = 5 To Cells(Rows.Count, "B").End(xlUp).Row If Cells(i, "B") <> "" And Cells(i, "D") > 0 Then str = Cells(i, "B") With Worksheets(str) If MsgBox(str & "シートを" & Cells(i, "D") + 1 & "部印刷しますか?", vbYesNo) = vbYes Then .PrintOut copies:=Cells(i, "D") + 1 End If End With End If Next i End Sub ※ 数量を少なくして試してみてください。 (紙がもったいないため) こんな感じではどうでしょうか?m(_ _)m

yakkun2338
質問者

補足

tom04さん、ありがとうございます! いつもありがとうざいます!! 早速実行してみましたところ、下記のようなエラーが出てしまいました・・・ Worksheets(str)=<インデックスが有効範囲にありません> 申し訳ございませんが、再度お知恵をお借りできませんでしょうか? よろしくお願い致します。

関連するQ&A

専門家に質問してみよう