• 締切済み

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

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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

  • エクセルマクロで条件のシートを印刷する方法

    エクセルマクロで条件のシートを印刷する方法を教えてください 初め、目的のシートを作成する為の条件がセルに入力しているシート(以降:条件シート)があり マクロで条件シートから情報を吸い上げて情報に沿ったシート(以降:結果シート)を複数作成します。 ここでは条件シートが複数存在しています。 結果シートを作成する為の条件と作成するシート数はその都度違います。 結果シートを作成する際は前回に作った結果シートを全て削除してから作っています。 条件シートのシート名に「●」を入力しておいて、「●」が含まれていないシートを削除するようにしています。 ここで質問になりますが、作成した全ての結果シートだけを印刷する方法を教えていただけないでしょうか 方法としては「●」が含まれていないシートを全て印刷するという命令にしたいのですが。 ご教授お願いいたします エクセル2003を使用しています。

  • マクロ初心者(;◔ิд◔ิ) 条件一致のセルを選択

    マクロ初心者です☆ マクロを、特定の条件と一致したセルを対象に実行したいのですが、 どのように指定すればよいのでしょうか。。。 条件は、、、 A列のセルのうち、B1とイコールのセルを選択 というような単純なものです。 ただし、A列のデータはすべて関数(IF&VLOOKUP)の抽出データです。 ご教示お願いします!!!

  • 完全一致したら代入するマクロを教えてください

    エクセルのSheet1のa列にある文字列と、Sheet2にあるa列にある文字列と完全一致したら、前者のセルの右隣に後者のセルの右隣の文字列を代入するマクロをお教えください。単純にvlookup関数を使えばいいのですが、VBAで行いたいのです。よろしくお願い申し上げます。

  • 完全一致したら複数のセル代入するマクロは?

    エクセルのSheet1のa列にある文字列と、Sheet2にあるa列にある文字列と完全一致したら、前者のセルの右隣から3番目までのセルに、後者のセルの右隣から3番目までの文字列を順に代入するマクロをお教えください。単純にvlookup関数を使えばいいのですが、VBAで行いたいのです。複数のセルに順に代入するのに苦慮しています。よろしくお願い申し上げます。

  • エクセル 複数の条件に一致

    複数の条件に一致したセルの内容によって、別のセルに別の文字を自動で表示したいのですが可能でしょうか? 詳細はこのような形で、 【シート1】       A     B       C 1      0001     3/1    有 2      0002     3/1    無 3      0001     3/2    不明 【シート2】       A     B       C 1             3/1      3/2 2      0001       ○      △ 3      0002       ×     "空欄" ・シート2のB2からC3を自動で表示できるようにしたい。 ・シート1のA列とシート2のA列が一致、更にシート1のB列とシート2の1行が一致。 ・シート1のC列が「有」の場合「○」、「無」の場合「×」、「不明」の場合、「△」、「空欄」の場合、「"空欄"」と表示。 知りうる限りの関数を合わせてみましたが、できませんでした。 どなたかいい方法を教えて頂ければと思います。 環境はXPpro、エクセル2000です。 宜しくお願いします。

  • エクセルで複数のシートからの検索

    エクセルの件でご質問です! 「複数のシートがあり、その中で条件の一致するシートを検索し、更にそのシート内の条件に一致するものを抽出したい」 となるとどのような方法でやるのでしょうか? 特定のシートから抽出するのは、IF文で可能かと思いますが、その前に複数のシートを検索してからとなると、わかりません。 VBAに関しては、まったくわからない状態です。関数等でできればご教授頂きたいと思います。 どうかよろしくお願いいたします。

  • 条件に見合うシートを複数選択するには?

    こんばんわ。 以下のような条件で複数シートを選択し、まとめて印刷させようとしているのですが、どうも論理的に考えられず、根をあげております。 シートは45枚そのうち左から42枚のみ下記条件に合うかどうか判別 条件:セルA2に”0”またはエラーが入っていないシートをまとめて選択する 今のところ、配列を使い42枚のシートを選択する所までは、ゴリゴリとできたのですが、条件をクリアするシートのみを配列に入れるというところで躓いています。 どなたか、お知恵を拝借ください。 よろしくお願いします。

  • エクセルで印刷するシートを条件を指定し自動で印刷したいのですが?

    エクセルで印刷するシートを条件を指定し自動で印刷したいのですが? 具体的に言いますと、『複数あるシートのA25のセルの合計が0以下なら印刷しない、0以上なら印刷する』 といったものをマクロで記述しようと思い試行錯誤、似た質問も捜してはいるのですが、全くなド素人なもので応用が利きません。良きアドバイスお願い致します。

  • エクセルマクロ 「101」 ボタンをおして 「102」となるマクロ?

    エクセルです。 一つのセル(A4)に「101」と書いてあります。それをVlookup関数で他のシートから一致する情報を取り出しています。次に同じセルに「102」とうつと、同じように一致する情報を取り出しています。 そこで、一回、一回、セルに102や103と打つのではなく、ボタンを押すと次の番号にうつるようなマクロを組みたいと思ってます。 ただ、101~130 次は、201~231みたいになってます。 一つのマクロでなくても良いので、よろしくお願いします。 最初は、 Range("A4").select  セルA4を選択 だと思うのですが、この次から分かりません。

  • 複数の条件に一致するセルの数値を返すためには

    質問が分かりづらかったら申し訳御座いません。 複数の条件に一致するセルに打ち込まれた文字列を飛ばすにはどうすればよいですか? 下記の写真を参考にさせてもらいますと、 別シートのセルに【日付が3月15日が休の場合に該当者の名前】を自動的に飛ぶようにしたいです。 飛ばすセルも該当者を全て一つのセルに表示させるのではなく、該当者毎にセルを分け、横並びに表示をしたいです。 条件一致するセルの個数等は本で調べて分かったのですが、該当者の名前を飛ばすとなると分かりません。 宜しくお願い致します。

専門家に質問してみよう