• ベストアンサー

ExcelVBA:フィルターの状態を保存して後で復元したい?

いつもお世話になります。 オートフィルターを頻繁につかうワークシートについて:  1)あるときのフィルター状態を保存し  2)いろいろフィルター状態の変更を伴う処理をして  3)それが済んだら1)のフィルター状態に復元する という処理を行いたいです。  Dim myFilters As filters  Set myFilters = ActiveSheet.AutoFilter.filters  ・・・  Set ActiveSheet.AutoFilter.filters = myFilters ではダメですね。 それは確認しました。 具体的にどうすればいいのでしょうか。 ユーザーはどんなシートに対して、どんな凝ったフィルターをマクロ前に掛けているか分かりません。 この状態が絞れればラクなんですが・・・。 余談ですが、Excel2003では、  Set myFilters = ActiveSheet.AutoFilter.filters のようにfiltersが大文字になりません。 (大文字にしても小文字に変更される) バグでしょうか。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

参考程度に Sub test() Dim i As Integer Dim myFilters As Variant On Error Resume Next ReDim myFilters(1 To ActiveSheet.AutoFilter.Filters.Count) For i = 1 To ActiveSheet.AutoFilter.Filters.Count myFilters(i) = ActiveSheet.AutoFilter.Filters(i).Criteria1 Next i MsgBox "フィルタを解除します" Selection.AutoFilter MsgBox "フィルタを元に戻します" For i = 1 To UBound(myFilters) If myFilters(i) <> "" Then Selection.AutoFilter Field:=i, Criteria1:=myFilters(i) End If Next i End Sub

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

こんにちは 案1 対象のシートを丸ごと別シートにコピーし、処理後に戻す 案2 全フィールドの抽出条件を配列等に取得して処理後に再設定

参考URL:
http://www.moug.net/tech/exvba/0150044.htm
TYWalker
質問者

お礼

まとめてですみません。 ううーん、やっぱそれしかないんですね。 オブジェクトが取得できるわけだから、ズバーンとできるのカナと一瞬夢想してしまいました。 どうもありがとうございます。

関連するQ&A