• 締切済み

マクロで条件一致のシート選択

エクセルで複数のシート(50頁程)の決まったセル(A5)に 関数式の結果、条件に一致すれば「○」、不一致なら「×」となるようにしています。 これを「○」が表示されるシートのみ全て印刷するマクロが作成したいのですが、 どのような命令文を組めばよいのか分かりません。 本を購入して勉強していますが、浅い知識では初歩的なことしか出来ません。 ぜひ、御教授願います。

みんなの回答

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

>(50頁程・・ ページというのは印刷した結果の紙の枚数やシート上の区切られた範囲です。用語が不適当。 ここでは「50個(枚)のシート」と表現すべきです。 その50枚はそのブックにあるシート全部ですか?それとも一部ですか?一部なら、50枚とそれ以外にあるシートを区別するものは何ですか?。質問には良く情況を考えて書いてください。 50枚が全てなら、ブックにあるシート全部を捉え、その各シートの A5セルの値が○かどうかIF文で判別すれば良い。 ブックの全てのシートを捉えるのは#2のような書き方のほかに書きもあります。 Sub test01() For Each sh In Worksheets MsgBox sh.Name Next End Sub を実行して納得してください。 A5が○かどうかは IF Sh.Cells(5,"A")="○" Then です ーー >関数式の結果、条件に一致・・ セルの値を問題にするので、関数で設置された値でも、手入力でも、 VBAで値をセットしたものも、変わりがありませんよ。だから突き詰めて言えば、質問にこの行を書く必要は無い。 ーー 印刷は (印刷範囲).PrintOut です。 一回ページ設定と印刷の操作をして、マクロの記録を取り、どういうコードになるか、変えるべきコード箇所があるか勉強すること。 ーーー VBAの解説書にも、For Eachは載っているはず。あわよくば For Each sh In Worksheets の例が載っているかも。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

オブジェクト変数に馴染みの無い方には、下記の次点の回答が分かりやすいと存じます。 http://oshiete1.goo.ne.jp/qa3648723.html Sub test() Dim i As Long For i = 1 To ActiveWorkbook.Sheets.Count Worksheets(i).Activate If Range("A5") = "○" Then ActiveSheet.PrintOut Next End Sub といったところでしょうか。

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.range("A5").value="○" then ws.printout end if Next for each ~ next このbook(マクロのあるBook)のすべてのworksheetをひとつづつ処理

関連するQ&A