解决了:找到了我自己的工作表错误,我遇到的问题是试图在同一个工作簿中使用两个worksheet_change事件。因为我认为这是可能的,所以当我收到一个错误时,我只是重新命名了所讨论的工作表事件,对此我什么也不想。当与我的其他worksheet_change事件相结合时,我的原始代码和答案都提供了工作。谢谢大家。
原始请求:
我试图运行一个宏来执行以下操作:
每次单元格r6更改时,运行一个宏,以查看单元格s9中的值是>还是< 1,然后根据此设置单元格S9:T 100的格式。
我有自己的宏来做第二部分:
sub macro1()
If Range("S9").Value < 1 Then
Range("S9:S100,T9:T100").Select
Selection.NumberFormat = "0.0%"
Else
Range("S9:S100,T9:T100").Select
Selection.NumberFormat = "#,##0"
End If
end sub此宏自行运行,完全按照我的要求工作,并设置单元格的格式。
然后我将有一个工作表事件来调用这个宏:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$R$6" Then
Call Macro1
End If
End Sub当它运行以调用相同的宏时,它不会格式化单元格。不管何时单元格r6发生变化,它们只是作为%保持不变。
知道工作表事件为什么会导致宏不工作吗?
发布于 2016-03-02 21:58:22
尝试将工作表对象传递给宏。这完全符合Ranges的条件,以确保您在正确的区域上工作。
而且,您根本不需要Select。只需使用范围和直接改变设置。
Public Sub Macro1(ws as Worksheet)
If ws.Range("S9").Value < 1 Then
ws.Range("S9:S100,T9:T100").NumberFormat = "0.0%"
Else
ws.Range("S9:S100,T9:T100").NumberFormat = "#,##0"
End If
end sub
Sub test()
Macro1 ActiveSheet
End Sub在你的Worksheet_Change里..。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$R$6" Then
Macro1 Target.Worksheet
End If
End Subhttps://stackoverflow.com/questions/35758755
复制相似问题