プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 2

何を対象で判断するのかが、はっきりとはわかりませんが・・・


それぞれのシートでUsedRangeあるいは、SpecialCells()などを利用してデータの有無を判定すればよいのでは?

例えば
 sheet.cells.SpecialCells(xlCellTypeConstants, 23)
で、データ(数値、文字など)の入力されているRangeが返されます。
 sheet.cells.SpecialCells(xlCellTypeFormulas, 23)
で、同様に式の入っているRangeを得ることが可能です。
(「編集」-「ジャンプ」-「セル選択」とほとんど同機能)
(Rnage.Countで対象セルの個数を得ることも可能です)
ただし、この方法の場合、該当セルがない場合はメソッドがエラーになるようですので、これを利用して判断すればよいかも。

UsedRangeは使用したレンジの範囲(矩形に変換)を返します。
こちらは、対象がない場合でも最低A1セルの1ヶ所が返されるようなので、個数だけでは単純に判断できません。
また、式や値をデリートしているセルでも(実際は何も入力されていない)、完全にクリアーされていないとカウントの対象になるようですので、注意が必要です。
(念のため、ForEachなどで各セルの内容をチェックする必要があるかもしれません。)

どのような判定をしたいのか不明ですので、質問者さんの使用状況に応じて選択してご利用ください。
それぞれの、詳細についてはヘルプなどを参照してください。
    • good
    • 0

>データ(数値)が入っているワークシート



これはどのようにして判定しますか?

特定の行などにデータが入っているとデータがあると判定するのか、
シートでセルが一つでも使われていたらデータがあると判定できるのか?

はたまた別か?
などなど。
    • good
    • 0

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

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


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