工作表和模块之间的variables不合作
我的Module 1macros没有看到工作表代码中指定的variables的值。 任何想法,为什么? 一切都是公开的。
在我的工作表中有这样的:
Public oldVal As Variant Public Sub Worksheet_SelectionChange(ByVal Target As Range) oldVal = Target.Value End Sub
在Module1中,我有一个macros连接到一个button,应该(为了testing目的)只是打印oldVal,但它不工作。 消息框是空的。
Public Sub button_Click1() MsgBox oldVal End Sub
任何想法为什么它没有从工作表中获取variables“OldVal”的值?
谢谢。
您应该在常规模块中声明您的公共variables以避免这种情况。
由于工作表的模块,ThisSession,ThisWorkbook,…是类的模块,所以您声明的variables被视为该类/对象的属性。
您的常规模块代码
Public oldVal As Variant Public Sub button_Click1() MsgBox oldVal End Sub
你的表单模块代码
Public Sub Worksheet_SelectionChange(ByVal Target As Range) oldVal = Target.Value End Sub
oldVal
就像一个类的属性,其中class是工作表。 因此,使用工作表的名称以及MsgBox Sheet1.oldVal
也许variablesoldVal
应该被实现为工作表类的只读属性。 因此,只有在select更改时才可以在类中设置值,而不能从工作表类以外进行设置。 像下面这样。
工作表类模块:
Private m_oldVal As Variant Public Property Get OldVal() As Variant OldVal = m_oldVal End Property Public Sub Worksheet_SelectionChange(ByVal Target As Range) m_oldVal = Target.Value End Sub