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

时间:2015-04-21 12:23:22

标签: excel vba

我偶然回答了关于上述主题的上一篇文章。我已经尝试了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

1 个答案:

答案 0 :(得分:1)

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

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