• ベストアンサー

マクロ セルの値と同じシートをセルの数値印刷する

エクセルのマクロについて教えてください。 "メイン"というシートのA列に項目、B列に枚数入力をします。 A列と同じ名前のシートをB列に記載されている数字の枚数印刷したいです。B列が0や空欄の場合は印刷しないようにしたいです。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.3

No.1の追記です。 A列のシート名に誤記がありシートが存在しない時にその旨表示して実行を続ける場合 No.1はエラーで止まります。 Dim i As Long, flg As Boolean Dim Ws As Worksheet With Worksheets("メイン") For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row flg = False For Each Ws In Worksheets If Ws.Name = .Cells(i, "A").Value Then flg = True Exit For End If Next If .Cells(i, "B").Value <> "" And .Cells(i, "B").Value <> 0 And flg = True Then Worksheets(.Cells(i, "A").Value).PrintOut copies:=.Cells(i, "B").Value, preview:=True ElseIf flg = False Then MsgBox .Cells(i, "A").Value & "というシートはありません", vbInformation End If Next End With

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

Googleで「vba printout」で照会したら仕舞だろう。 例えば、https://www.moug.net/tech/exvba/0050119.htm」 下記事項など、書いてなくて、ゆるい質問だ。 ・プレビュー画面で確認するか ・印刷範囲は各シート同じなのか Sub test01() lr = Worksheets("メイン").Range("a1000").End(xlUp).Row For i = 3 To lr sn = Cells(i, "A") 'MsgBox sn cp = Cells(i, "B") 'MsgBox cp Worksheets(sn).Range("a1:B10").PrintOut Copies:=cp Next i End Sub ーー 印刷範囲では、CurrentRegionを使える場合か? https://kosapi.com/post-2790/ ーー 存在するシートのほとんどが対象なら、SheetについてFor Eachを使ったほうが良いかも。 Sub test2() For Each sh In Worksheets MsgBox sh.Name ’除外するシート名かどうかを、ここでIfで判別してスキップ ’印刷処理 Next End Sub

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.1

印刷ボタンのマクロに Dim i As Long With Worksheets("メイン") For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row If .Cells(i, "B").Value <> "" And .Cells(i, "B").Value <> 0 Then Worksheets(.Cells(i, "A").Value).PrintOut copies:=.Cells(i, "B").Value, preview:=True End If Next End With プレビューがいらない場合 preview:=True を外してください。

すると、全ての回答が全文表示されます。

関連するQ&A