家・車以外で、人生で一番奮発した買い物

VBAは今まで一度も作成したことがなく思考錯誤していますが全くたどり着けません。
商品名の複数のシートがあります。(100シートを超えています。)
例)鍋ねぎ、風みかん など

それぞれB13のセルに数式で合計数が入るようになっているのですが、
この合計数が1以上のシートのみすべて一括で印刷できるようにしたいのです。

ご教示いただけると幸いです。

質問者からの補足コメント

  • うーん・・・

    ありがとうございます!
    そのままコピペして実行させていただいたのですが、
    全てのシートが印刷されてしまうようです。。。
    ちなみに多分関係ないとは思いますがセルB13のには=IF(I13,I13,"")このような数式が入っていて該当のセルにはそれぞれリストから参照された数値が入っています。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/12/07 13:55
  • HAPPY

    なるほど!理解致しました!
    頭の悪い式を入れてたばっかりに。。。
    印刷でしか基本表自体使わないのでI13をB13にそのまま反映させて対応させて頂きました!
    しっかりと印刷ができましたありがとうございます!

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/12/07 15:12

A 回答 (2件)

No1です。



No1の回答にもお断りしておきましたが、B13は数値と想定した最低限のコードです。

>B13のには=IF(I13,I13,"")このような数式が入っていて
I13の内容がわかりませんが、こちらは必ず数値なのでしょうか。
""は文字列なので、No1のコードでは、1よりも大きいと判定され、印刷が実行されます。

空白文字列だけを除けばよいのなら、条件文を
If sh.Range("B13").Value <> "" And sh.Range("B13").Value >= 1 Then
などとしておけば除外することができます。

I13の内容が文字列の可能性がある場合には、文字列を除外する条件式に代えれば宜しいです。
もっと複雑なら、それに対応した判定条件にしておく必要があります。

シートがどうなっているのかわかりませんが、なんとなくの雰囲気からすると、B13セルを参照するのではなく、I13セルを直接参照するように変えれば、No1のコードのままで動作するような気もしますが・・
この回答への補足あり
    • good
    • 1
この回答へのお礼

本当にありがとうございました!
大変助かりました。

お礼日時:2022/12/07 15:13

こんにちは



ごく簡単に記述するなら、

Sub Sample()
For Each sh In Worksheets
If sh.Range("B13").Value >= 1 Then sh.PrintOut
Next sh
End Sub

といった感じでしょうか。
※ 全てのシートの「B13セルの値は数値である」ことを前提にしています。


>一括で印刷できるようにしたいのです。
上記のコードは、厳密には「一括」というわけではなく、「該当シートを順に」印刷するというものです。
結果的には、同様になると思いますが。
この回答への補足あり
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A