人生最悪の忘れ物

会社である表にオートフィルタをつけています。
そのオートフィルタのリスト項目ごとに印刷をしたいのですが、
かなり手間がかかってしまうので、マクロをくみたいと考えています。
リストの項目は毎回変わってしまうので、マクロ初心者の私にはとても難しいのです。
お分かりになる方よろしくお願いします。

A 回答 (1件)

こんばんは!


実際のデータの配置がどのようになっているのか判らないので、方法だけです。

>・・・オートフィルタのリスト項目ごとに印刷をしたいのですが・・・

とありますので、ある列の項目すべてでオートフィルタをしプリントアウトしたい!ということだと解釈してのコードになります。

↓の画像のようにSheet1のD列のすべての項目でオートフィルタをかけて、プリントアウトするようにしてみました。
(Sheet1のD列データをSheet2のA列に重複なしで表示するようにしていますので、Sheet2は使用していないという前提です)

画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i, j As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1") '←Sheet名は実際のSheet名に!
Set ws2 = Worksheets("sheet2")
ws2.Cells.Clear
For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Range(ws1.Cells(2, 4), ws1.Cells(i, 4)), ws1.Cells(i, 4)) = 1 Then
ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) = ws1.Cells(i, 4)
End If
Next i
j = ws1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row
Range(ws1.Cells(1, 1), ws1.Cells(j, 4)).AutoFilter field:=4, Criteria1:=ws2.Cells(i, 1)
ws1.PrintOut
Next i
End Sub 'この行まで

あくまでこちらで勝手に表を作った上でのコードですので、中身は実状に合わせる必要があります。
Sheet1のデータ範囲・オートフィルタの列等々です。m(__)m
「オートフィルタのリストを順番に印刷できる」の回答画像1
    • good
    • 8

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

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


おすすめ情報