Excel 如何在单元格值更改时运行宏
我创建了一个宏,它根据一个单元格值进行过滤,效果很好Excel 如何在单元格值更改时运行宏,excel,vba,Excel,Vba,我创建了一个宏,它根据一个单元格值进行过滤,效果很好 Range("A1:L1").AutoFilter Field:=4, Criteria1:=Range("U1") 每次单元格值更改时,我都需要运行此宏。 我写了一个宏,但它不工作,我没有得到任何错误,只是什么也没有发生 我试过: Private Sub Worksheet_Tabelle1(ByVal Target As Range) If Target.Address = "$U$1" Then Application.Enabl
Range("A1:L1").AutoFilter Field:=4, Criteria1:=Range("U1")
每次单元格值更改时,我都需要运行此宏。
我写了一个宏,但它不工作,我没有得到任何错误,只是什么也没有发生
我试过:
Private Sub Worksheet_Tabelle1(ByVal Target As Range)
If Target.Address = "$U$1" Then
Application.EnableEvents = False
Range("A1:L1").AutoFilter Field:=4, Criteria1:=Range("U1")
Application.EnableEvents = True
End If
End Sub
这个版本应该只执行代码而不调用宏。我将工作表uxxxxx更改为工作表名称,并尝试了其他方法
我还尝试:
Private Sub Worksheet_Arbeitstabelle(ByVal Target As Range)
If Target.Address = "$U$1" Then
Call Macro1
End If
End Sub
此版本应调用以下宏:
Sub Macro1()
Range("A1:L1").AutoFilter Field:=4, Criteria1:=Range("U1")
End Sub
我将所有私有子宏放在工作表上,宏1放在一个模块中。
这个文件是.xlsm,在运行其他宏时没有任何问题,所以我不知道为什么它不工作。我猜我可能是把名字弄错了,下面是我的名字:
试试这个:
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A1:C10")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' Display a message when one of the designated cells has been
' changed.
' Place your code here.
MsgBox "Cell " & Target.Address & " has changed."
End If
End Sub
我改变了:
Private Sub Worksheet_Arbeitstabelle(ByVal Target As Range)
致:
@Siddharth Rout将我链接到:
此处说明,无需在工作表
因为代码存储在工作表中,所以无需告诉它在何处执行操作,因为它不在模块中可能与我在问题中提到的@FunThomas重复,我将代码放在何处,它不在模块中modul@SiddharthRout谢谢,我读了答案,把工作表改成了工作表,现在开始工作了,谢谢但是我找到了另一个建议solution@CedricIntersect函数实际上更可取。如果更改的范围与一个或多个范围相对应,则可以运行宏。考虑更改<代码>目标、地址…< /代码>行。
Private Sub Worksheet_Change(ByVal Target As Range)