• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2003オートフィルタの有無を確認マクロ)

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

このQ&Aのポイント
  • Excel2003のオートフィルタの有無を確認し、状態を切り替えるマクロについて説明します。
  • オートフィルタを設定する方法として、Selection.AutoFilterを使用することができますが、この方法ではオートフィルタの状態を判断することができません。
  • 代わりに、オートフィルタがオン・オフどちらの状態かを確認し、切り替えるための命令を一行で書くことができます。具体的な手順はURL(http://www.asahi-net.or.jp/~zn3y-ngi/YNxv208.html)を参考にしてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> 一行で書く オンにする If Not Sheets("Sheet1").AutoFilterMode Then Selection.AutoFilter オフにする If Sheets("Sheet1").AutoFilterMode Then Selection.AutoFilter 場合によってSelectionの部分は実態に合わせ書き換えてください。

r2san
質問者

お礼

ご回答ありがとうございました。 シンプルでわかりやすいご回答で勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えば次のようにしてはいかがでしょう Private Sub オートフィルタの状態を調べて切り替える() If Worksheets("SSS").AutoFilterMode = False Then ans=MsgBox("オートフィルタがオフの状態です。オンにしますか?", vbYesNo) If ans = vbYes Then オートフィルタを設定するマクロを記入する。 End If End If If Worksheets("SSS").AutoFilterMode = True Then ans=MsgBox("オートフィルタがオンの状態です。オフにしますか?", vbYesNo) If ans = vbYes Then Worksheets("SSS").AutoFilterMode = False End If End If End Sub 状態を調べて質問をすることなく反対のことをさせるのでしたらansのマクロをカットすればよいでしょう。いずれにしろオートフィルタの状態はFalseやTrueで調べることになりますね。

r2san
質問者

お礼

ご回答ありがとうございました。 わかりやすいご説明でよくわかりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

    オートフィルタがかかっていて、なおかつ抽出中なら、 という状態をvbaで取得する方法はありますか? Sub Sample() If ActiveSheet.AutoFilterMode = True Then End If End Sub これだと、 オートフィルタがかかっているだけでも、反応してしまいます。 「行番号が青色になってるのなら」 と同じ状態にしたいのですが、 どういうコードになりますか?

  • [Excel2000]auto_closeを止めさせるには

    Excel2000で、 特定のボタンを押した場合以外の閉じる処理を キャンセルさせたいのですがうまくいきません sub ボタン押() flg = true end sub sub auto_close() if flg <> true then msgbox "AAA" exit sub end if end sub これでは、どーやってもそのまま終了してしまいます。 なにか良い方法はないでしょうか・・・ よろしくおねがいします。

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

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

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

    質問です。 オートフィルタで複数列を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 よろしくお願いいたします。

  • (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) になってしまいます。 フィルタがかかっているか調べる方法はありますか? よろしくお願いします。

  • ダブルクリックでエクセル起動

    セルをダブルクリックしてマクロを起動させたいのですが。 B1セルをダブルクリックすると、 Sub 顧客名検索() ans = InputBox("顧客名を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:G1").AutoFilter 'オートフィルタモードをセット .Range("A1:G1").AutoFilter Field:=2, Criteria1:="=*" & ans & "*" '2つ目のフィルターに検索文字 End With End Sub を実行させるようにしたいのです。 その方法で、C1、D1、E1、・・・も同様にしたいと思っています。 どなたか教えてください。

  • 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 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

  • 【Excelマクロ】特定のタイミングでオートフィルタ-を解除し、コンボボックスの表示項目を変更するには。

    お教えください。 まずは現状です。 シート1とシート2があります。 シート1上にはコンボボックスがあります。 コンボボックス内の項目を選択すると、シート1内でオートフィルタ-が実行され、選択項目をキーに絞り込まれます。 シート1とシート2はそれぞれ画面上のボタンで行き来できます。 シート2にはコンボボックスはありません。 ここで質問です。 (1)シート1でコンボボックスを利用し、オートフィルタ-を実行したまま状態で、(2)シート2にボタン(ないしは下のタブ)で移動します。(3)さらに再度ボタン(ないしは下のタブ)でシート1に戻るとします。 (1)~(3)の操作を行った時に、シート1のオートフィルタ-を解除し、コンボボックスの表示項目を「すべて表示」という項目に自動変更させる方法はありますでしょうか? 下記がボタン押下時のコードです。 一応ボタンで戻った時にオートフィルタ-は解除できるようになりました。下のタブだと変化なしです。 Sub ボタンA_Click() ' シート1を開く Sheets("シート1").Select End Sub Sub ボタンB_Click() If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData End If ' シート2を開く Sheets("シート2").Select End Sub 現状ではコンボボックスはそのままで、(タブで戻った時は)オートフィルタ-も変わりません。 どなたかご指南ください。 よろしくお願いします。

  • オートフィルタボタンのon・off

    ツールバーにオートフィルタのボタンを設定していますが、以前エクセル97の時には、オートフィルタの実行と解除がひとつのボタンで簡単にon・offできました。 最近エクセル2000に変更したのですが、ユーザー設定でこのツールバーのコマンドから同じように設定しても、オートフィルタの実行はできますが、同じボタンで解除ができなくなりました。 オートフィルタを頻繁にon・offしたいのですが、このボタンで解除(off)できないと、毎回メニューから辿っていかなくてはならず、不便になりました。どのように設定すればいいか教えて下さい。 よろしくお願いします。

  • EXCEL2007 マクロ

    EXCELのマクロですが、EXCEL2003で作成しました。 EXCEL2003では正常に動作しましたが、EXCEL2007だと「処理を開始する」「OK」のメッセージが出た後 『インデックスが有効範囲にありません』 とエラーがでると他の人に言われたのですが、この中に2007だと使用できない命令があるでしょうか? あるとしたら、2007~2000まで使用できる代わりの命令などはあるでしょうか? よろしくおねがいします。 Private Sub CommandButton2_Click() Dim fName As String, orgDir As String Const タイトル = "「csv」ファイルを選択してから、[開く]ボタンをクリックしてください。" Const ファイルの場所 = "C:\" 'ファイルの場所 Const フィルタ1a = "CSV" 'ファイルの種類 Const フィルタ1b = "*.csv" 'ファイルの拡張子 orgDir = CurDir ChDir ファイルの場所 fName = Application.GetOpenFilename(フィルタ1a & "," & フィルタ1b, 1, タイトル) If fName <> "False" Then Workbooks.Open fName Else MsgBox "[キャンセル]または[×]ボタンがクリックされました。", , "タイムカード注入" Exit Sub End If ChDir orgDir If MsgBox("処理を開始します", vbOKCancel + vbInformation, "最終確認") = vbCancel Then Exit Sub End If Windows("2008.csv").Activate Sheets("2008").Range("C3:C33").Select Application.CutCopyMode = False Selection.Copy Windows(ThisWorkbook.Sheets("報告書").Range("A2") & ".xls").Activate Range("G5:G35").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Windows("2008.csv").Activate Sheets("2008").Range("K3:K33").Select Application.CutCopyMode = False Selection.Copy Windows(ThisWorkbook.Sheets("報告書").Range("A2") & ".xls").Activate Range("I5:I35").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Workbooks("2008.csv").Close SaveChanges:=False End Sub

このQ&Aのポイント
  • 自営業をされていた旦那の父が亡くなり、会社は保証人が義母となっており、700万ほどの負債がある状況です。
  • 旦那は出向という形で義父の会社から給料をもらっていましたが、今後もそのまま働くべきか悩んでいます。
  • 希望としては会社をたたみたいですが、義母もお金がなく、会社を閉める費用もわかりません。また、義父の兄弟の遺産放棄が成立しております。どのようにして会社を進めていけばいいか助言をいただきたいです。
回答を見る

専門家に質問してみよう