当特定公式重新计算时,在Excel中运行VBA宏

时间:2017-08-16 19:18:20

标签: excel vba excel-vba

我在Excel中的宏很远,并且可以真正使用一些指导。需要运行一个看起来像这样的简单宏:

Public Sub CopyReplaceValue(rng1 As String)

Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim rng2 As Integer

On Error GoTo LetsContinue

str1 = "N" ''this is your FRZ column
str2 = Range(rng1).Row ''Row number of updated cell
str3 = str1 & str2 ''FRZ cell to be changed

rng2 = Range(str3).Value 
If Sgn(Range(rng1)) <> Sgn(rng2) Then    
Range(str3).Value = 0    
ElseIf Abs(Range(rng1).Value) <= Abs(rng2) Then    
Range(str3).Value = Range(rng1).Value

End If    
LetsContinue:    
Exit Sub  
End Sub

现在棘手的部分是如何在我需要它时调用这个宏。我希望rng1成为我设置范围内的单元格,然后我需要一个事件来触发调用。

问题是使用Private Sub Worksheet_Change(ByVal Target As Range)似乎不起作用,因为完成的工作表只会在RTD链接和公式更新时更改。当我手动更改范围中的值时,该事件似乎只会更新,这不是我在工作表完成时所做的事情。

当此范围内的单元格通过公式重新计算和/或更改时,是否有办法调用此宏,而无需人触摸工作表。

1 个答案:

答案 0 :(得分:1)

尝试使用Private Sub Worksheet_Calculate()

您可能需要创建一些来触发或不触发函数内的宏。