我创建了一个类模块,我在其中定义了一个函数。无论何时调用该函数,它都会在本地窗口中列出两次。只有第二个值的值发生变化,第一个值保持为空或“零”,具体取决于其类型,直到代码执行结束。我对标准模块中定义的函数没有这个问题。我做错了什么,这是一个错误,还是背后的逻辑原因?
TestClass类模块的内容:
Public Value As Double
Function AddFive() As Double
AddFive = Me.Value + 5
End Function
标准模块的内容:
Sub TestSub()
Dim TestObject As New TestClass
TestObject.Value = 2
MsgBox TestObject.AddFive
End Sub
这是一个屏幕截图,显示当代码逐行执行时,函数的值在locals窗口中列出两次,并且在执行函数代码后只有第二个值发生了变化。
我正在使用VBA for Excel 2010。
提前致谢。
答案 0 :(得分:0)
问题更多的是你如何做到这一点。如果你有一个只为类对象的内部变量添加5的函数,那么它在技术上是一个void(VBA中的Sub),因为你不需要返回值。
您的代码应为:
CLASS
Public Value As Double
Sub AddFive()
Me.Value = Me.Value + 5
End Sub
MODULE
Sub test()
Dim testObject As New TestClass
testObject.Value = 2
testObject.AddFive
MsgBox testObject.Value
End Sub
我可以想象为什么创建了2个变量可能有很多原因,但我发现因为你做了不正确的代码而进入为什么会出现意外行为有点无意义。
如果你愿意,你甚至可以编写类函数,在msgbox中显示它的值+ 5,这也不会产生额外的变量。但这很奇怪,我想你想要上面的代码。但这里无论如何:
CLASS
Public Value As Double
Sub ShowPlusFive()
MsgBox Me.Value + 5
End Sub
MODULE
Sub test()
Dim testObject As New TestClass
testObject.Value = 2
testObject.ShowPlusFive
End Sub