• 締切済み

VBAの記述について

入力シートのA1セルに有と入っていたらシートAを印刷する、無と入っていたら印刷しない。 次にB1セルに有と入っていたらシートB、シートCを印刷する。無ならば印刷しない。 これをG1セルまで繰り返して終了するというVBAの記述をご教授いただきたいです。

みんなの回答

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

No.2です。 >印刷されるシートにはそれぞれ別々の名前が付けられています・・・ というコトですが、 前回は 各シートの名前が「シートA」・「シートB」・・・ となっているという前提のコードですので、 仮に、実際のSheet名が 日曜・月曜・火曜・水曜・・・ となっている場合のコードは Sub 印刷2() Dim k As Long, myArray myArray = Array("日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜") For k = 0 To UBound(myArray) If Cells(1, k + 1) = "有" Then Worksheets(myArray(k)).PrintOut End If Next k End Sub といった感じになります。 ※ Array に格納していますので、 A1セル → 日曜 B1セル → 月曜 C1セル → 水曜・・・ といった具体にSheet名の対応になります。m(_ _)m

taku5
質問者

お礼

できました。親切にありがとうございました!

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

こんにちは! 簡単な方法で・・・ 「入力シート」のシートモジュールにしています。 Sub 印刷() Dim k As Long, myArray myArray = Array("A", "B", "C", "D", "E", "F", "G") For k = 0 To UBound(myArray) If Cells(1, k + 1) = "有" Then Worksheets("シート" & myArray(k)).PrintOut End If Next k End Sub こんな感じではどうでしょうか? ※ 印刷プレビューを表示していませんので、確認なしに一気に印刷されます。m(_ _)m

taku5
質問者

補足

迅速な対応誠にありがとうございます(^^) すいません、言い遅れましたが・・・ 印刷されるシートにはそれぞれ別々の名前が付けられています。 それでもこのやり方でできますか?

  • itu1989
  • ベストアンサー率44% (37/83)
回答No.1

Cells(行, 列)を指定できるのでCells(1, 列)として列をforループで回す(A~Gなので7回) Cells(1, 列)の値を確認して"有"なら印刷したいシートのSheetオブジェクト.Printoutで印刷する 印刷ルールが質問分だけじゃわからないです(同じように繰り返し?↓) A1 有 シートAを印刷 B1 有 シートB、シートCを印刷 C1 有 シートCを印刷? D1 有 シートD、シートEを印刷? E1 有 シートEを印刷? F1 有 シートF、シートGを印刷? G1 有 シートGを印刷?

taku5
質問者

補足

早速の回答ありがとうございます。 印刷ルールは不規則なので特に考慮されなくても結構です<m(__)m>

関連するQ&A