『VBA オートフィルタの設定』(サン) VBA初心者です。エクセル2003です。よろしくお願いします。   A8:Z8にオートフィルタをかけいて、W2とX2には数式で検索結果(文字) がでる様にしています。 実行したい事が、W2の値が変更したら、フィルタがかかっていれば解除し 再度A8:Z8にフィルタをかけ、E列のオートフィルタオプションで W2と等しい OR X2と等しいという設定で抽出したいのですが出来ません。 アドバイスお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("W2").Address Then  If ActiveSheet.AutoFilterMode = False Then   Range("A8:BG8").Select    Selection.AutoFilter  End If  Selection.AutoFilter   Range("A8:BG8").Select    Selection.AutoFilter Range("E8").AutoFilter Field:=5, Criteria1:=Range("W2"), Operator:=xlOr, _ Criteria2:=Range("X2") End If End Sub ---- 数式でW2が変化するなら Calculateイベントじゃないかな (みやほりん) ---- すでに、みやほりんさんから回答があるけど、計算式によるセルの値の変化では、残念ながらChangeイベントが発生しないので Calculateを使わざるを得ない。 ただ、アップされたコード自体、ちょっと見直した方がいいかな。 実際には、必ずオートフィルターがかかっている状況だろうから、必ずRange("A8:BG8").Select は実行されるんだけど 純粋ににコードだけを見ると、上の If で条件に合わなければSelectされない。 なのに、End If の直後で、Selection を使っているね。 そもそもが Select/Selection は使わないほうがいい。 以下、コード記述の一例。 Private Sub Worksheet_Calculate() 'フィルターが設定されていればいったん解除 If Me.AutoFilterMode Then Me.AutoFilter.Range.AutoFilter Range("A8:BG8").AutoFilter 'あらためて範囲指定でオートフィルター設定 'フィルタリング実行 Me.AutoFilter.Range.AutoFilter Field:=5, Criteria1:=Range("W2"), Operator:=xlOr, Criteria2:=Range("X2") End Sub (ぶらっと)