EXCEL-VBA 指定のRange範囲の変化に対応する

あーしょっちゅう忘れる。
フィルタで抽出を、イベント実行したい。

autofilterじゃなくて
検索条件範囲の変化で、実行みたいな。

セル範囲ターゲット指定は↓
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("抽出条件の範囲") Is Nothing Then
Exit Sub
Else
call sltFLT
End If
End Sub

'フィルタの実行モジュール
sub sltFLT()

'フィルタ実行のマクロ
Range("元になるリストの範囲").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _
("抽出条件の範囲"), CopyToRange:=Range("抽出データを表示する行"), Unique:=False
End sub


なので

〔サンプル条件〕
 元のリスト: A1:N2000    (A1:N1 はリストのタイトル)
 抽出条件 : A2010:N2011  (タイトルと条件入力行)
 抽出範囲 : A2015:N2015  (結果表示する最初の行)


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A2011:N2011") Is Nothing Then
Exit Sub
Else
call sltFLT
End If
End Sub

'フィルタの実行モジュール
sub sltFLT()

'フィルタ実行のマクロ
Range("A1:N2000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _
("A2010:N2011"), CopyToRange:=Range("A2015:N2015"), Unique:=False
End sub


おぉ、実行ボタンいらないし。いいぞ。
今のところ、2000行のデータで問題なく動いてる。


ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック