fer*_*cs2 5 excel vba excel-vba
我有一个自定义对象,我通过循环添加到数组.问题是当我初始化这样的对象时:
Dim CallNum As New Lib_CallNum
Run Code Online (Sandbox Code Playgroud)
循环中添加的最后一个对象将覆盖循环期间添加的所有其他对象.所以我最终会得到一个充满了大量相同对象的数组.为了解决这个问题,我不得不改变初始化对象的方式:
Dim CallNum As Lib_CallNum
Set CallNum = New Lib_CallNum
Run Code Online (Sandbox Code Playgroud)
但我不确定为什么第一次初始化不起作用.那么两组代码有什么区别?
chr*_*sen 10
在Dim一个循环中实际上并没有在每次迭代执行.它仅在第一次遇到变量时执行.
要演示这一点,请在Lib_CallNum类初始化定义中添加一个部分:
Private Sub Class_Initialize()
Debug.Print "Initialise Lib_CallNum"
' ...
End Sub
Run Code Online (Sandbox Code Playgroud)
并运行您的原始代码.初始化仅报告一次.从那时起,您将多次向阵列添加相同的实例.
初始化新实例对象的正确方法是@Doug告诉你的, Set ... = New ...