如何实现Excel VBA基于单元格值变更自动筛选指定数据区域?
自动触发Excel筛选的VBA解决方案
需要对工作表Compensation Eval - Template中A12:I350区域的数据进行筛选,筛选条件基于B8和L10单元格的值。已有可正常运行的VBA代码,但每次修改单元格值后都需手动打开VBA模块执行代码,希望实现单元格值变更时自动触发筛选。
尝试用Worksheet_SelectionChange事件触发,但因C2单元格的值是通过公式从其他工作表填充的,该方案无效。随后改为将J4设为手动输入的触发条件,基于J4的值筛选,最终通过将代码移至工作表模块内解决了问题。
初始手动执行代码
Option Explicit Sub FilterBasedOnCellValueAnotherSheet() Dim product1, product2 As Range With Worksheets("Compensation Eval - Template") Set product1 = .Range("B8") Set product2 = .Range("L10") End With With Worksheets("Compensation Eval - Template") With .Range("A12:I350") .AutoFilter Field:=2, Criteria1:=product1, Operator:=xlOr, Criteria2:=product2 End With End With End Sub
尝试的无效触发代码
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row = 2 And Target.Column = 3 Then Sub FilterBasedOnCellValueAnotherSheet() Dim product1, product2 As Range With Worksheets("Compensation Eval - Template") Set product1 = .Range("B8") Set product2 = .Range("L10") End With With Worksheets("Compensation Eval - Template") With .Range("A12:I350") .AutoFilter Field:=2, Criteria1:=product1, Operator:=xlOr, Criteria2:=product2 End With End With End If End Sub End Sub
最终可行的自动触发代码
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 4 And Target.Column = 10 Then Dim product1 As Range With Worksheets("Compensation Eval - Template") Set product1 = .Range("J4") With .Range("A12:I350") .AutoFilter Field:=2, Criteria1:=product1 End With End With End If End Sub
内容的提问来源于stack exchange,提问作者Abigayle Paulson
相关产品推荐
相关产品推荐

