仕事を頑張る人のおしりトラブル対策

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

このQ&Aに関連する最新のQ&A

F1 ルール」に関するQ&A: F1のルール

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/11/15 13:44

こんにちは!



簡単な方法で・・・
「入力シート」のシートモジュールにしています。

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

この回答への補足

迅速な対応誠にありがとうございます(^^)

すいません、言い遅れましたが・・・

印刷されるシートにはそれぞれ別々の名前が付けられています。

それでもこのやり方でできますか?

補足日時:2013/11/15 12:22
    • good
    • 0

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>

補足日時:2013/11/15 11:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング