- 締切済み
VBAの記述について
入力シートのA1セルに有と入っていたらシートAを印刷する、無と入っていたら印刷しない。 次にB1セルに有と入っていたらシートB、シートCを印刷する。無ならば印刷しない。 これをG1セルまで繰り返して終了するというVBAの記述をご教授いただきたいです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
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
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 簡単な方法で・・・ 「入力シート」のシートモジュールにしています。 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
補足
迅速な対応誠にありがとうございます(^^) すいません、言い遅れましたが・・・ 印刷されるシートにはそれぞれ別々の名前が付けられています。 それでもこのやり方でできますか?
- itu1989
- ベストアンサー率44% (37/83)
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を印刷?
補足
早速の回答ありがとうございます。 印刷ルールは不規則なので特に考慮されなくても結構です<m(__)m>
お礼
できました。親切にありがとうございました!