VBA Excel如何在复制行时维护过滤器

时间:2014-03-05 14:17:11

标签: excel vba excel-vba filter

所以我在它们上面有一个关联过滤器的行(每个单元格上都有一个箭头,当你点击它们时,会出现一个允许用户过滤特定内容的过滤器框)。但是我有一个小问题,这是我用来将一行从一张纸复制到另一张的代码:

Sheets(Name).Range("A1").EntireRow.Copy Destination:= _
     Sheets("Monthly").Range("A1").End(xlUp).Offset(Sheets("Monthly").UsedRange.rows.Count - 1)
Cells.EntireColumn.AutoFit

问题是,当此代码复制行时,它们会丢失其过滤器属性。有没有办法保存这些信息?

2 个答案:

答案 0 :(得分:1)

作为评论的后续行动:

应在工作表Monthly上明确应用自动过滤器。 比方说,如果你将第1行(使用自动过滤器)中的行№1复制到工作表№10中的工作表Monthly,那么你应该使用这一行来应用自动过滤器:

Sheets("Monthly").Range("A10:Z10").AutoFilter 

更改行号和列以适应。

答案 1 :(得分:1)

默认情况下,Range.AutoFilter方法将应用于整行,因此您可以像这样放置行的第一个单元格...

Worksheets("Monthly").Range("A10").AutoFilter

此外,为了进行更多控制,您可以传递其他参数:

Worksheets("Monthly").Range("A10").AutoFilter _
    field:=1, _
    Criteria1:="nameToMatch", _
    VisibleDropDown:=True

在Excel VBE(Visual Basic编辑器)中,只需突出显示您想要查找更多信息的任何内容,然后点击F1以显示帮助。

Excel Developer Reference非常有帮助。