在Excel VBA中使用类模块存储和比较数组发生更改时的值

我偶然回答了上一个关于上述主题的post。 我已经尝试了Radek推荐的代码(按照下面提供的链接),它的工作原理。

我想知道如果有人可以向我解释如何编码的作品,即如何MyIniValMyRange不具有相同的值,因为Initialize_MySheet程序设置它们的值是相同的?

非常感谢提前!

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 

在传递给Initialize_MySheet过程时,MyIniVal存储单元格的 。 MyRange存储对工作表单元格的引用 ,并将随着单元格值的更改而更新。

编辑 – 可以想象,Ran可以持有对多个单元格的引用,在这种情况下代码将失败。