質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

フィルタ

フィルタとは、特定の条件に合わせてデータへのアクセスをブロックするプログラムやルーチンを指します。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

13881閲覧

フィルタを再適用させるマクロ

noncha930

総合スコア16

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

フィルタ

フィルタとは、特定の条件に合わせてデータへのアクセスをブロックするプログラムやルーチンを指します。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/04/04 02:17

初心者です。質問させて頂きます。
各シートのフィルタを再適用させるマクロを作成したいです。
下記のコードを簡潔にまとめることは可能でしょうか。
どうかご教授ください。宜しくお願い致します。

Sub 再適用()

On Error Resume Next

Sheets("4").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("5").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("6").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("7").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("8").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("9").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("10").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("11").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("12").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("1").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("12").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("3").Select ActiveSheet.AutoFilter.ApplyFilter Sheets("入力用").Select

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんな感じですかね。
AutoFilterの存在するworksheetすべてに対してApplyFilterを実行します。

VB

1Dim curSheet As Worksheet 2For Each curSheet In ThisWorkbook.Worksheets 3 If Not (curSheet.AutoFilter Is Nothing) Then 4 curSheet.AutoFilter.ApplyFilter 5 End If 6Next

投稿2019/04/04 02:53

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

全てのワークシートに適用して良いのであれば、下に示したようにForループを使えば短く、簡潔になります。

Sub sample() Dim wb as Workbook, ws as Worksheet Set wb = ActiveWorkbook For each ws in wb.Worksheets ws.Select ActiveSheet.AutoFilter.ApplyFilter Next End Sub

投稿2019/04/04 02:43

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noncha930

2019/04/04 02:48

ありがとうございます!!>< できました! ちなみに下記のコードも簡潔になりますでしょうか。 1つだけ印刷をしないシートが存在しているので やはりシート名を記載しないといけないものでしょうか。。 Sub 印刷() Sheets(Array("4", "5", "6", "7", "8", "9", "10", "11", "12", "1", "2", "3")).Select Sheets("4").Activate ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False End Sub
coco_bauer

2019/04/04 02:56 編集

1シートを除外するなら、その除外するシートの名前("Jogai")だけコードに書けば足ります。 Sub sample() Dim wb as Workbook, ws as Worksheet Set wb = ActiveWorkbook For each ws in wb.Worksheets If ws.name != "Jogai" Then ws.Select ActiveSheet.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False EndIf Next End Sub
coco_bauer

2019/04/04 02:56

コードにタイプミスがあったため、修正した
noncha930

2019/04/08 02:40

遅くなりすみません。。 全て解決しました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問