- ベストアンサー
条件に見合うシートを複数選択するには?
こんばんわ。 以下のような条件で複数シートを選択し、まとめて印刷させようとしているのですが、どうも論理的に考えられず、根をあげております。 シートは45枚そのうち左から42枚のみ下記条件に合うかどうか判別 条件:セルA2に”0”またはエラーが入っていないシートをまとめて選択する 今のところ、配列を使い42枚のシートを選択する所までは、ゴリゴリとできたのですが、条件をクリアするシートのみを配列に入れるというところで躓いています。 どなたか、お知恵を拝借ください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
選択すれば良いだけなら、こんな感じでどうでしょうか? Sub test() Dim i As Integer, cnt As Integer i = 1: cnt = 0 For i = 1 To Worksheets.Count - 3 If Not IsError(Worksheets(i).Range("A2").Value) Then If Worksheets(i).Range("A2").Value <> 0 Then If cnt = 0 Then Worksheets(i).Select Else Worksheets(i).Select False End If cnt = cnt + 1 End If End If Next End Sub
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
印刷しないシートが少なければ、 Sub test05() Dim sh As Worksheet For Each sh In Worksheets MsgBox sh.Name Next End Sub を参考に、印刷しないシート方を聞くいてスキップする。 Sub test05() Dim sh As Worksheet For Each sh In Worksheets if sh.Name=(印刷しないシート名)OR sh.name=・・・then Else If sh.cells(2,"A")=0 and IsError(略) then Range("... ").Printout End If End If Next End Sub
お礼
遅くなりすいません。 回答ありがとうございました。 参考になりました。 ただ、ちょっと理解できなかったのですが、 最初のIF文の条件で「sh.name=・・・」とあり、 ここには何が入るのでしょう? この条件が真の時は、For文を抜けてしまうような気もするのですが・・・ 実際に動かしてみる余裕が今現在ありませんので、 お礼という形のみで終了させていただきます。 また、何かの際に質問するかもしれませんが、そのときにはまたよろしくお願いします。 ありがとうございました。
お礼
お礼が遅くなりすいません。 回答ありがとうございました。 上記のプログラムで実現されました。 記述されたプログラムを見ると、 「フムフム・・・こういう風に書けば良いのか・・・」と 思うのですが、周りに相談できる相手もおらず、一人で考えているとなかなかうまく書ききれずに困っていました。 こういうのって、思考力とかの差なんですかね(^^;) また、何かで質問するかもしれませんが、そのときにはまたよろしくお願いします。 ありがとうございました。