提问人:mikebinz 提问时间:5/8/2023 更新时间:5/8/2023 访问量:177
如何将 VBA 类变量传递给模块函数 ByRef?
How Can I Pass a VBA Class Variable to a Module Function ByRef?
问:
可以将 VBA 类对象传递给模块函数,然后该函数可以修改类对象的变量。
但是,我找不到传递单个类变量来执行相同的操作,即修改单个类变量
在Excel中说明;
'Create a Class Module (named Class1) with One Variable;
Public c1Long As Long
'Copy the following into a Code Module;
Public Cls1 As Class1
Function SetCls1LongTo2(ioCls1 As Class1)
ioCls1.c1Long = 2
End Function
Function SetCls1LongTo3(ByRef ioLong As Long)
Debug.Print "iPar=" & ioLong
ioLong = 3
Debug.Print "oPar=" & ioLong
End Function
现在从即时窗口运行以下命令;
Set Cls1=New Class1
Call SetCls1LongTo2(Cls1)
? Cls1.c1Long '2 as expected
Call SetCls1LongTo3(Cls1.c1Long) 'the Debug.Prints are "iPar=2" and "oPar=3" as expected
? Cls1.c1Long 'still 2?
SetCls1LongTo3() 中的“ByRef”应该是多余的,我已经尝试过没有; 我还尝试在 Cls1 中声明 c1Long 的 Let 和 Get 属性,结果都相同
就好像整个类对象可以通过引用传递,但单个类变量只能通过值传递?
任何人都可以解释这种行为,并希望也能提供解决方案吗?
答: 暂无答案
评论
Member variables
value type
ByVal