• ベストアンサー

オートフィルタがかかっていて、なおかつ抽出中なら

tsubuyukiの回答

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

Sub Filter_Sample()   If ActiveSheet.AutoFilterMode = True Then  ' フィルタオンオフ     MsgBox "フィルタモードオン"     If ActiveSheet.AutoFilter.FilterMode = True Then  '絞込オンオフ       MsgBox "絞り込みオン"     Else       MsgBox "絞り込みオフ"     End If   Else     MsgBox "フィルタモードオフ"   End If End Sub 両者、ちょっとだけ違いますね。 参考になりますかどうか。

MOUELHZOLXOYM
質問者

お礼

autoFilterMode と AutoFilter.FilterMode の違いなのですね! 教えてもらわないと気付かない事でした。 ありがとうございました。勉強になりました。

関連するQ&A

  • なぜShowAllDataだとうまく行かないのでし

    なぜShowAllDataだとうまく行かないのでしょう? 「オートフィルタがかかってるなら解除する」 と言うコードを勉強しているのですが Sub a() If ActiveSheet.AutoFilterMode = True Then ActiveSheet.ShowAllData End If End Sub とすると、実行時エラー1004になります。 Sub b() If ActiveSheet.AutoFilterMode = True Then ActiveSheet.AutoFilterMode = False End If End Sub すると正常に動きます。 ActiveSheet.ShowAllData= True にしてもダメでした。

  • (VBA)フィルタがかかっているかどうかの判断方法

    フィルタがかかっているかどうかを取得したいのですが フィルタがかかっているシートにて Sub test1() If ActiveSheet.FilterMode Then MsgBox "フィルタがかかってます" End If End Sub Sub test1の1() If ActiveSheet.FilterMode = True Then MsgBox "フィルタがかかってます" End If End Sub を実行しても"フィルタがかかってます"は表示されません。 Sub test2() If Rows(1).FilterMode Then MsgBox "フィルタがかかってます" End If End Sub Sub test3() If ActiveSheet.Rows(1).FilterMode Then MsgBox "フィルタがかかってます" End If End Sub こちらは オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) になってしまいます。 フィルタがかかっているか調べる方法はありますか? よろしくお願いします。

  • VBAで保存時の状態に戻す方法

    本などを参考にしながらエクセルVBAを使って売上帳を作成しています。 品名欄のキーワード検索機能を付けていますが、抽出した後、元の状態に戻す良い方法はないですか? キーワードの抽出は以下の書き方です。 Sub 品名検索() Dim ans As String ans = InputBox("文字列を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A4:IV4").AutoFilter 'オートフィルタモードをセット .Range("A4:IV4").AutoFilter Field:=5, Criteria1:="=*" & ans & "*" '5つ目のフィルターに検索文字 End With End Sub よろしくおねがいします。

  • オートフィルタをしても本当の最終行を取得したい

    エクセル2007のVBAについて教えてください。 A1→目次 A2→あ A3→い A4→う A5→え A6→お オートフィルタで「え」を抽出します。 この状態で Sub test() MsgBox Range("a65536").End(xlUp).Row End Sub を実行すると、5が返ってきますが 実際の最終行は6です。 オートフィルタをしつつ、最終行を取得するには どうすればいいのでしょうか? ご回答よろしくお願いします。

  • Excel2003オートフィルタの有無を確認マクロ

    オートフィルタを設定するときは、 Selection.AutoFilter を使ってもできますが、これですとオートフィルタがオン・オフどちらの状態かわかりません。 これを、オートフィルタをオンにしますよ、オフにしますよ、という命令を送るように命令を一行 で書くことは可能なのでしょうか? もし手順で書くなら(http://www.asahi-net.or.jp/~zn3y-ngi/YNxv208.html)から引用しますが、 次のようにできるようです。 /-------------------------------------------/ Private Sub オートフィルタの状態を調べて切り替える() If Worksheets("SSS").AutoFilterMode Then 'オートフィルタモードなら MsgBox "オートフィルタは現在オンです。[OK]ボタンをクリックするとオフにします" オートフィルタのオンオフを切り替える Else MsgBox "オートフィルタは現在オフです。[OK]ボタンをクリックするとオンにします" オートフィルタのオンオフを切り替える End If End Sub

  • Excelマクロでオートフィルターからコピペ

    ファイルのB列の値から0以外の値をオートフィルターで抽出し、値を、別のファイルのD列の一番下に貼りつけるマクロを作っていますがうまくいきません。 今作ったのは Sub macro1() If ActiveSheet.AutoFilterMode = False Then Range("A:G").Select Selection.AutoFilter Else Selection.AutoFilter Range("A:G").Select Selection.AutoFilter End If Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd Range("A1").Select Range("B2", Range("B2").End(xlDown)).Select Selection.Copy Windows("貼りつけるファイル名").Activate Cells(Rows.Count, 4).End(xlUp).Offset(1).Select ActiveSheet.Paste End Sub です。 フィルターで0以外の値を抽出しコピーまではできていますが、貼りつけるところでエラーがでます。 Microsoft Visual Basic 400 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

  • オートフィルタ マクロについて

    質問です。 オートフィルタで複数列を1つの条件で抽出したいのですが、教えてください。 たとえばA列が納品書No.・B列が受注No.・C列が商品No.なのですがすべて数字の為、出来ればInBox一回でA-C列を検索してほしいです。 指定納品書NO 受注NO 元品番 21812 3252608 77 21880 3307989 32B 22053 3389769 95414A 22050 3389770 67312H 22052 3389771 67312H 22050 3389773 67118H 以下の様なマクロを作ってみましたが、 A-C列全てに一致しないと抽出しないようです。 どなたかご教授いただけないでしょうか? マクロ '条件1 の設定 Dim 検索NO As Variant '抽出キーの入力指示 検索NO = InputBox("検索NOを入力てください。") 'キャンセルした場合の処理 If 検索NO = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A2:O2").Select Selection.AutoFilter Else Selection.AutoFilter Range("A2:O2").Select Selection.AutoFilter End If Selection.AutoFilter Field:=1, _ Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO Selection.AutoFilter Field:=2, _ Criteria1:=">=" & 検索NO2, Operator:=xlAnd, Criteria2:=" " & 検索NO2 Selection.AutoFilter Field:=3, _ Criteria1:=">=" & 検索NO3, Operator:=xlAnd, Criteria2:=" " & 検索NO3 AutoFilterMode = False Application.ScreenUpdating = True End Sub よろしくお願いいたします。

  • オートフィルタで非表示セルの判定

    オートフィルタでフィルタ後、表示されない行にあるボタンを消したいのですが表示されていないセルの判定方法がわかりません。 下のマクロではエラーが出ます。 よろしくお願いします。 If ActiveSheet.Range("a10").Visible = False Then ボタンを消すマクロ End If

  • オートフィルタの一括解除について教えて下さい。

    オートフィルタの一括解除について教えて下さい。 以下のVBAをwebから見つけて、マクロに貼りつけて実行してみましたが、 オートフィルタは一括解除できますが、そのあともオートフィルタの機能は 残しておきたいのですが、どうすればできますか? Sub RemoveFiltersAllWorksheets()  Dim objWorkSheet As Worksheet  For Each objWorkSheet In Worksheets   objWorkSheet.AutoFilterMode = False  Next End Sub 宜しくお願いします。

  • エクセルVBA住所録で半角全角問わず検索する方法

    エクセルVBAで住所録を作っています。 住所録で下記のようなコードを書いて、キーワード検索をさせるようにしているのですが、『*丁目』や番地に半角英数を使っています。 全角で数字を入力しても検索されるようなコードの書き方はあるのでしょうか? 宜しくお願いします。 Sub 住所検索() ans = InputBox("住所を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:IV1").AutoFilter 'オートフィルタモードをセット .Range("A1:IV1").AutoFilter Field:=4, Criteria1:="=*" & ans & "*" '4つ目のフィルターに検索文字 End With End Sub