0
後、私は次の操作を実行するマクロを記述しようとしているヘッダを除くすべてのフィルターの行を選択:シート1からは、VBAをエクセル - オートフィルタ
- データI入力の欄を見て、
- A列のセルに何かを書き込むと、その値がSheet2にフィルタリングされます。
- フィルタを実行した後、複数の値があっても、2番目のシートの列見出しを除くすべてを最初のシートにコピーします。 Iは、ヘッダ行が同様にコピーされる選択をコピーし、しかし.Offset使用する場合しかし(1、0)ヘッダと1つの追加の行をカットしdoesnの
Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("A:A") If Not Application.Intersect(KeyCells, Range(Target.Address)) _ Is Nothing Then copy_filter Target End If End Sub Sub copy_filter(Changed) Set sh = Worksheets("Sheet2") sh.Select sh.Range("$A$1:$L$5943") _ .AutoFilter Field:=3, _ Criteria1:="=" & Changed.Value, _ VisibleDropDown:=False Set rang = sh.Range("$A$1:$L$5943") _ .SpecialCells(xlCellTypeVisible) rang.Offset(0, 0).Select Selection.Copy Worksheets("Sheet1").Select Worksheets("Sheet1").Range(Changed.Address).Offset(0, 1).Select Selection.PasteSpecial Paste:=xlPasteValues sh.Range("$A$1:$L$5943").AutoFilter Application.CutCopyMode = False End Sub
:
私はこれを書いてみましたフィルタが結果を返さない場合を考慮する必要があります。
ヘッダー以外のすべてのフィルタリングされた行を選択するにはどうすればよいですか?
どのようにあなたのコードはOPのこの要件の世話をしている '•フィルタリングする:だから我々は、トラップにこのようなエラーを持っていますSheet2; 'ワークシートの変更イベントがなければ可能性があるとは思えません。 – skkakkar
リファクタリングを必要としないため、私はOPのワークシート変更イベントを含めませんでした。 copy_filter(Changed)は同じ方法で呼び出されます。 –
ご清聴ありがとうございます。 – skkakkar