2016-07-15 8 views
0

マクロ私は次の操作を実行するマクロを記述しようとしています:シート1からは、VBAをエクセル - セルの変化にフィルタリングされたデータをコピーする

  • データI入力の欄を見て、
  • A列のセルに何かを書き込むと、その値がSheet2にフィルタリングされます。
  • フィルタを実行した後、複数の値があっても、2番目のシートの列ヘッダーを除くすべてのものを最初のシートにコピーします。
  • ボーナスとして、私は何をしようとしているのか、Sheet2の列Aを除くすべてをコピーし、Sheet1の列Bからコピーすることができます。

私はこれを書いてみました:ボックスが表示されますので、Sheet1の変更イベントのための最初のPrivate Sub時計は

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 
     MsgBox "Cell " & Target.Address & " has changed. New value is: " _ 
      & Target.Value 
     copy_filter (Target) 
    End If 
End Sub 

Sub copy_filter(Changed) 
    Worksheets("Sheet2").Select 

    With Worksheets("Sheet2") 
     With .Range("$A$1:$L$5943") 
      .AutoFilter Field:=1, Criteria1:=Changed.Value 
      .SpecialCells(xlCellTypeVisible).Select 
      Selection.Offset(1, 0).Copy 
     End With 
    End With 

    Worksheets("Sheet1").Select 
    Worksheets("Sheet1").Range(Changed.Address).Offset(0, 1).Select 
    Selection.PasteSpecial Paste:=xlPasteValues 

    Application.CutCopyMode = False 
End Sub 

を、私はシートモジュールではなく、ブックのモジュールに入れて、それが動作しますしかし、正確には、2番目のSub私はこの行にエラーを得る:.AutoFilter Field:=1, Criteria1:=Changed.Value、エラーは言う:Run-time error '424': Object required

私が間違っていることを理解できません。

call copy_filter (Target)

OR

copy_filter Target

のいずれかに

答えて

1

変更copy_filter (Target)はこれを読む:https://msdn.microsoft.com/en-us/library/office/gg251432.aspx

+0

それを解くこと、ありがとうございます。しかし、いくつかの問題が発生しました:ヘッダー行をコピーするたびに '.Offset(1、0)'がヘッダーと1行追加をカットし、 'Selection.Rows.Count'パラメーターも1を返しますいずれの場合も、複数の行が選択されているにもかかわらずこれにより '.Resize(Selection.Rows.Count - 1')を行うことができなくなります。 – devster

関連する問題