Excel VBA 質問スレッド №2056 (解決済)

連続印刷-絞り込み結果がない場合はスキップ

投稿者 : 名無しさん     投稿日時 : 2024/12/02(Mon) 09:49:27     OS : Windows 11     EXCEL : Excel 2016
知恵をお貸しいただきたく、投稿させていただきます。

発注書のデータを印刷するためにマクロを活用しています。
野菜・果物・肉類それぞれを絞り込みして各種印刷したいのですが
結果がない(セルH9が空白)の場合はそれをスキップして次を印刷するようにしたいです。

現在使用しているのは以下のコードです。
この状態だと、絞り込み→印刷の働きしかしませんので
絞り込みしたときに何も記入がなくても、印刷されてしまいます。

どうかご教示いただけませんでしょうか。
よろしくお願いいたします。


Sub 各種印刷()

    ActiveSheet.Range("$H$8:$Q$17").AutoFilter Field:=1, Criteria1:="野菜"
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
        
    ActiveSheet.Range("$H$8:$Q$17").AutoFilter Field:=1, Criteria1:="果物"
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
        
    ActiveSheet.Range("$H$8:$Q$17").AutoFilter Field:=1, Criteria1:="肉類"
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

  ActiveSheet.Range("$H$8:$Q$18").AutoFilter Field:=1
  
  
End Sub

スポンサーリンク
[返信 1] Re : 連続印刷-絞り込み結果がない場合はスキップ
投稿者 : さんこう     投稿日時 : 2024/12/02(Mon) 13:17:45
オートフィルタで絞り込まれた件数を調べて、0以外のときだけ印刷するようにしたらよろしいかと思います。

参考になれば。

<VBA オートフィルタ 件数>
https://www.google.com/search?q=VBA+%E3%82%AA%E3%83%BC%E3%83%88%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF+%E4%BB%B6%E6%95%B0

[返信 2] Re : 連続印刷-絞り込み結果がない場合はスキップ
投稿者 : ピロリ     投稿日時 : 2024/12/02(Mon) 17:48:15
単純に、オートフィルタ設定後に、H8セルよりも下にデータが有れば印刷ってことでは駄目ですかね?
↓下のような感じで・・・  役に立たないようであれば読み捨てて下さい。
Sub Test()
    Range("$H$8:$Q$17").AutoFilter Field:=1, Criteria1:="野菜"  'AutoFilter後に↓処理
    
    If Cells(Rows.Count, "H").End(xlUp).Row > 8 Then    'H8セル下にデータ表示が有れば、
        'ActiveSheet.PrintOut                           '印刷の実行する
        MsgBox "印刷実行!"                             'For Test
    End If
End Sub

[返信 3] Re : 連続印刷-絞り込み結果がない場合はスキップ
投稿者 : 投稿者     投稿日時 : 2024/12/03(Tue) 15:57:41
■[返信 2] ピロリさん(2024-12-02 17:48:15)の記事
> 単純に、オートフィルタ設定後に、H8セルよりも下にデータが有れば印刷ってことでは駄目ですかね?
> ↓下のような感じで・・・  役に立たないようであれば読み捨てて下さい。
> Sub Test()
> Range("$H$8:$Q$17").AutoFilter Field:=1, Criteria1:="野菜" 'AutoFilter後に↓処理

> If Cells(Rows.Count, "H").End(xlUp).Row > 8 Then 'H8セル下にデータ表示が有れば、
> 'ActiveSheet.PrintOut '印刷の実行する
> MsgBox "印刷実行!" 'For Test
> End If
> End Sub

ピロリさん
限りなくこれで大丈夫です!
最終着地点は、データがない場合はスキップして次の絞り込み→印刷を行うようにしたいです。
野菜、果物、肉類のそれぞれ絞り込み、データがあるときのみ印刷、ない場合はスキップ
最後は絞り込みを解除して終了。(ActiveSheet.Range("$H$8:$Q$18").AutoFilter Field:=1)
という流れになります。

自分でも試行錯誤してみますが、お力を貸していただけるのであればお願い致します。

どなたでもけっこうです。
何卒よろしくお願いいたします。

[返信 4] Re : 連続印刷-絞り込み結果がない場合はスキップ
投稿者 : ピロリ     投稿日時 : 2024/12/03(Tue) 18:28:12
ちなみに、名無しさんと 投稿者さんは、同一人物ですか?

■[返信 3] 投稿者さん(2024-12-03 15:57:41)の記事
> 限りなくこれで大丈夫です!

何が問題なのか良く分かりませんが、[返信 2]で私が提示したテストコードは、
「野菜を絞り込み、データが有るとき処理実行し、無い場合はスキップ」の案。
If判定で H列の最終行が 8行目よりも下に有るか、有れば処理するって案です。
これは理解されていますか?
果物、肉類も同様の処理をして、最後にフィルタを解除すれば良いだけです。

Sub 各種印刷()で、全項目印刷(データが無くとも)と、フィルタ解除は出来て
いるようなので、前述の印刷可否判定を各項目の印刷前に追加するだけでは・・・

[返信 5] Re : 連続印刷-絞り込み結果がない場合はスキップ
投稿者 : 投稿者     投稿日時 : 2024/12/04(Wed) 11:50:31
■[返信 4] ピロリさん(2024-12-03 18:28:12)の記事
> ちなみに、名無しさんと 投稿者さんは、同一人物ですか?

> ■[返信 3] 投稿者さん(2024-12-03 15:57:41)の記事
> > 限りなくこれで大丈夫です!

> 何が問題なのか良く分かりませんが、[返信 2]で私が提示したテストコードは、
> 「野菜を絞り込み、データが有るとき処理実行し、無い場合はスキップ」の案。
> If判定で H列の最終行が 8行目よりも下に有るか、有れば処理するって案です。
> これは理解されていますか?
> 果物、肉類も同様の処理をして、最後にフィルタを解除すれば良いだけです。

> Sub 各種印刷()で、全項目印刷(データが無くとも)と、フィルタ解除は出来て
> いるようなので、前述の印刷可否判定を各項目の印刷前に追加するだけでは・・・


ピロリさん
投稿者と名無しは同一人物です。
すみません、コードの内容をきちんと確認できておりませんでした…。

おっしゃる通り、印刷前にご回答いただいたコードを差し込むのみで
望んでいた動作を実行することができました。

この度はお忙しいところご回答いただきありがとうございます。
大変助かりました。
きちんと自分でも書けるように勉強します。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-01-25 12:39:55 )
タイトルとURLをコピーしました