• ベストアンサー

エクセルでデータがあるシートだけ印刷するマクロ

エクセルのマクロで印刷するマクロを使っていますが、5つある ワークシートを全て選択して印刷するマクロでこれをデータ(数値)が 入っているワークシートだけ印刷するマクロにしたいのですがどのようにすればいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 以下のようにするのが一般的です。 Sub test1() Dim sh As Worksheet For Each sh In Worksheets  '数値のみ '文字を含むなら、CountA です。  If WorksheetFunction.Count(sh.Cells) > 0 Then    ''sh.PrintOut '印刷  End If Next End Sub

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

何を対象で判断するのかが、はっきりとはわかりませんが・・・ それぞれのシートでUsedRangeあるいは、SpecialCells()などを利用してデータの有無を判定すればよいのでは? 例えば  sheet.cells.SpecialCells(xlCellTypeConstants, 23) で、データ(数値、文字など)の入力されているRangeが返されます。  sheet.cells.SpecialCells(xlCellTypeFormulas, 23) で、同様に式の入っているRangeを得ることが可能です。 (「編集」-「ジャンプ」-「セル選択」とほとんど同機能) (Rnage.Countで対象セルの個数を得ることも可能です) ただし、この方法の場合、該当セルがない場合はメソッドがエラーになるようですので、これを利用して判断すればよいかも。 UsedRangeは使用したレンジの範囲(矩形に変換)を返します。 こちらは、対象がない場合でも最低A1セルの1ヶ所が返されるようなので、個数だけでは単純に判断できません。 また、式や値をデリートしているセルでも(実際は何も入力されていない)、完全にクリアーされていないとカウントの対象になるようですので、注意が必要です。 (念のため、ForEachなどで各セルの内容をチェックする必要があるかもしれません。) どのような判定をしたいのか不明ですので、質問者さんの使用状況に応じて選択してご利用ください。 それぞれの、詳細についてはヘルプなどを参照してください。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

>データ(数値)が入っているワークシート これはどのようにして判定しますか? 特定の行などにデータが入っているとデータがあると判定するのか、 シートでセルが一つでも使われていたらデータがあると判定できるのか? はたまた別か? などなど。

関連するQ&A

専門家に質問してみよう