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

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

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

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

Q&A

解決済

2回答

1860閲覧

VBA 特定月でオートフィルターする方法

akintat-2748

総合スコア25

VBA

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

0グッド

0クリップ

投稿2020/11/19 21:03

編集2020/11/19 21:38

こんにちは。

VBAを初心者です。

現在様々な項目の体力テストを実施し、次回計測時期をFSのセルに入力しています。

イメージ説明

ここから特定の月があるもの(例えば1月)であるものだけをオートフィルター抽出し、別のシートにコピーしたいと考えています。調べ持って下記のようにコードを記述しました。

VBA

1Sheets("Sheet3").Select 2 3Dim Filter_Month 4Dim Criteria_Month 5Dim Target As Range, LastCell As Range 6 7Set Target = Sheets("基本評価次回計測").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 8 9 10 Filter_Month = InputBox("抽出したい月を入力してください") 11 12 Select Case Filter_Month 13 Case "1" 14 Criteria_Month = xlFilterAllDatesInPeriodJanuary 15 Case "2" 16 Criteria_Month = xlFilterAllDatesInPeriodFebruray 17 Case "3" 18 Criteria_Month = xlFilterAllDatesInPeriodMarch 19 Case "4" 20 Criteria_Month = xlFilterAllDatesInPeriodApril 21 Case "5" 22 Criteria_Month = xlFilterAllDatesInPeriodMay 23 Case 6 24 Criteria_Month = xlFilterAllDatesInPeriodJune 25 Case "7" 26 Criteria_Month = xlFilterAllDatesInPeriodJuly 27 Case "8" 28 Criteria_Month = xlFilterAllDatesInPeriodAugust 29 Case "9" 30 Criteria_Month = xlFilterAllDatesInPeriodSeptember 31 Case "10" 32 Criteria_Month = xlFilterAllDatesInPeriodOctober 33 Case "11" 34 Criteria_Month = xlFilterAllDatesInPeriodNovember 35 Case "12" 36 Criteria_Month = xlFilterAllDatesInPeriodDecember 37 End Select 38 39 Range("A1").AutoFilter field:=175, Criteria1:=Criteria_Month, Operator:=xlFilterDynamic 40 41Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy Target 42ActiveSheet.AutoFilterMode = False 43 44End Sub

実行するとRange メソッドのとこでとまってしまいます。

イメージ説明
イメージ説明

行き詰まってしまいましたのでご教授お願いできればと思います。

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

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

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

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

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

guest

回答2

0

MacではRange.Autofilterはサポートされていないようです。

Range.AutoFilter メソッド (Excel)

Excel for Mac は、このメソッドをサポートしていません。

ただ、

Selection およびListObjectの同様のメソッドはサポートされています。

とあるので、

VBA

1Range("A1").CurrentRegion.Select 2Selection.AutoFilter field:=175, Criteria1:=Criteria_Month, Operator:=xlFilterDynamic

こんな感じで試してみられてはいかがでしょうか。
すぐにテストできる環境がないので間違ってたらごめんなさい。

投稿2020/11/20 00:23

radames1000

総合スコア1923

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

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

akintat-2748

2020/11/20 04:07

コメントありがとうございます。 コードを試したのですが、同じ結果でした????
radames1000

2020/11/20 05:31

前回の質問を見るとAutofilterは出来ているようなのでわたしの回答は誤りのようですね。 もう少し調べてみます。
guest

0

ベストアンサー

こんにちは。
当方では、1から12を指定した限りエラーは出ませんね。
1から12以外を指定した場合は同様のエラーとなりますが。。。
質問者さんのコードとの差異は、FS列(Fields:=175)をA列(Fields:=1)にして、A列に年月日を設定した程度ですね。

ステップ実行で、RangeのところでCriteria_Monthに正しい値が入ってますか?

投稿2020/11/20 00:35

DreamTheater

総合スコア1095

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

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

akintat-2748

2020/11/20 04:06

コメントありがとうございます。 1を入力した際はCriteria_Monthに21が入っているのですが、これでいいのでしょうか?
akintat-2748

2020/11/20 04:13

補足です。Fields:=175を17など違う値にするといけました。どういうことなのでしょうか?
DreamTheater

2020/11/20 04:16

全く同じ表を作るのが面倒だったのでA列に年月日を入れてコードも合わせて書き換えたということです。
akintat-2748

2020/11/20 04:19

175でできて、17で出来ない理由は何かあるのでしょうか?
DreamTheater

2020/11/20 04:41

Q列には何が入っているのですか?
DreamTheater

2020/11/20 04:46

Criteria_Month = 21については Debug.Print xlFilterAllDatesInPeriodJanuary を実行して 21 と表示されれば問題ないですね。 radames1000さんの回答に記載されてますが、Mac版のExcel-VBAなんでしょうか? 今更ですが、質問文に環境情報(OSやExcelのバージョンなど)を書きましょう。
radames1000

2020/11/20 05:33

エラーダイアログを見てMacだと思いましたが、 前回質問にMacと記載がありますね。 DreamTheaterさんのご指摘通り、環境情報をお願いします。
YT0014

2020/11/20 06:20

途中列に空白があるなどで、FS列がA1からのリストに含まれていない可能性はないでしょうか? Range("A1:FS1")にして、175を試してみる価値はあるかと思います。
radames1000

2020/11/20 06:30

イミディエイトウィンドウに ?range("a1").CurrentRegion.Address として、対象範囲を確認してみるといいかも。
DreamTheater

2020/11/20 06:37

途中に空欄列があるとすると確かに怪しいですね。 可能であれば、FS列を現A列の手前にコピー挿入して、Fields:=1として実行できるかどうか。 うまくいったとしてどの範囲がコピーされるか?
akintat-2748

2020/11/20 09:14

皆さんありがとうございます!ご指摘通り、途中列に空白があり、FS列が含まれていませんでした!rangeの範囲をRange("A1:FS1")に変更したら無事に作動しました!ちなみに環境はMACのExcel2006でした。皆様の意見とても勉強になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問