我偶然回答了关于上述主题的上一篇文章。我已经尝试了Radek推荐的代码(根据下面提供的链接),它可以工作。
我想知道是否有人可以向我解释如何编码,即 MyIniVal 和 MyRange 自 Initialize_MySheet <以来没有相同的值/ strong> procedure将它们的值设置为相同?
提前多多谢谢!
https://stackoverflow.com/a/26738652/4814794
代码是:
名为“Class1”的类模块:
Public WithEvents MySheet As Worksheet
Public MyRange As Range
Public MyIniVal As Variant
Public Sub Initialize_MySheet(Sh As Worksheet, Ran As Range)
Set MySheet = Sh
Set MyRange = Ran
MyIniVal = Ran.Value
End Sub
Private Sub MySheet_Calculate()
If MyRange.Value <> MyIniVal Then
Debug.Print MyRange.Address & " was changed from " & MyIniVal & " to " & MyRange.Value
StartClass
End If
End Sub
并在正常模块中:
Dim MyClass As Class1
Sub StartClass()
Set MyClass = Nothing
Set MyClass = New Class1
MyClass.Initialize_MySheet ActiveSheet, Range("A2")
End Sub
答案 0 :(得分:1)
MyIniVal在传递给Initialize_MySheet过程时存储单元格的值。 MyRange将引用存储到工作表上的单元格中,并在单元格值更改时更新。
编辑 - 可以想象Ran可以保存对多个单元格的引用,在这种情况下代码将会失败。