excel 插入行时也会触发宏(AdvancedFilter)

zvms9eto  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(107)

我发现了这个惊人的过滤器代码,当特定的单元格范围发生变化时,(例如,1,2,3,4)。然而,每当我插入一行时,它都会自动触发宏并过滤它,因为新行的值为零。不幸的是,我的知识非常有限,不确定如何修改宏,以便在添加行时它不会自动执行。任何帮助都将不胜感激!下面是使用的代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Range("e10:e80").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range _
("f6:e7"), Unique:=False
End Sub

字符串
我试着把下面的代码添加到最后,但似乎不起作用?

application.enableevents = true

c9x0cxw0

c9x0cxw01#

请尝试以下操作:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

'Stop macro if more than once cell was changed
    If Target.Cells.Count > 1 Then Exit Sub

'Apply advanced filter if the criteria range was changed
    Dim rgCriteria As Range
    Set rgCriteria = Me.Range("E6:F7")
    If Not Intersect(Target, rgCriteria) Is Nothing Then
        Me.Range("E10:E80").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=rgCriteria
    End If

End Sub

字符串
我还建议查看Range.CurrentRegion方法,用于在添加新记录时标识整个数据范围,以及在条件数量更改时标识整个条件范围。例如:Range("E10").CurrentRegionRange("E6").CurrentRegion。**注意:**使用此方法,数据范围和条件范围必须至少由一个空白行或列分隔。

相关问题