我正在尝试使它,以便当我的代码中的一个特定单元格被更改然后它将显示一条消息,但我收到以下错误消息“运行时错误438对象不支持此属性或方法”。不确定这意味着什么。请有人帮我理解。这是代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Adress = "F48,I48,L48,F50,I50,L50,I52,L52,N52" Then
MsgBox "You are about to change an AP-42 Emision Factor"
End If
End Sub
答案 0 :(得分:2)
1st ,使用Target.Address
这是正确的属性名称。
第二,您的if
语句永远不会返回true。 Target.Address
将始终返回以下内容:$E$2
,$E$3:$E$4
等等...在您的情况下,您应该使用类似Intersect
或Union
方法的内容
使用Union
方法编辑可能的解决方案:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngTMP As Range
Set rngTMP = Range("F48,I48,L48,F50,I50,L50,I52,L52,N52")
If Union(Target, rngTMP).Address = Union(rngTMP, rngTMP).Address Then
MsgBox "Ok"
End If
End Sub
答案 1 :(得分:1)
这是你在尝试的吗?
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F48,I48,L48,F50,I50,L50,I52,L52,N52")) Is Nothing Then
MsgBox "You are about to change an AP-42 Emision Factor"
End If
End Sub
答案 2 :(得分:1)
Code Siddharth Gave创造奇迹所以非常感谢。因为我试图通过以下方式编写代码来创建两个Worksheet_Change事件,所以我遇到了trouple:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$8" Then
Toggle_Rows
End If
End Sub
Private Sub Worksheet_Change(Byval Target As Range)
If Not Intersect(Target, Range("F48,I48,L48,F50,I50,L50,I52,L52,N52")) Is Nothing Then
MsgBox "You are about to change an AP-42 Emision Factor"
End If
End Sub
你可以想象这不起作用,给了我一个模糊的名字错误。因此,经过一些研究,以下是将这两个函数写成一个的方式:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$8" Then
Toggle_Rows
End If
If Not Intersect(Target, Range("F48,I48,L48,F50,I50,L50,I52,L52,N52")) Is Nothing Then
MsgBox "You are about to change an AP-42 Emision Factor"
End If
End Sub
感谢所有人的帮助!