excel vba – macros来复制单元格更改过滤的数据

我试图写一个macros来做以下事情:

  • 从Sheet1中看到我input的数据的A列;
  • 当我在A列的单元格中写入内容时,使用该值来过滤Sheet2;
  • 在完成过滤之后,即使有多个值,也可以将第二个表中除列标题以外的所有内容复制到第一个表中。
  • 作为奖励,它可以复制除了从Sheet2的列A以外的所有内容,并从Sheet1的列B开始复制,这正是我所尝试的。

我试着写这个:

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 

第一个Private Sub监视Sheet1上的更改事件,我把它放到工作表模块中,而不是工作簿模块,它工作,因为框显示正确,但是在第二个Sub我在这一行上得到一个错误: .AutoFilter Field:=1, Criteria1:=Changed.Value ,错误说: Run-time error '424': Object required

我无法弄清楚我做错了什么。

copy_filter (Target)更改为

call copy_filter (Target)

要么

copy_filter Target

阅读: https : //msdn.microsoft.com/en-us/library/office/gg251432.aspx