我遇到了障碍,到目前为止我的搜索还没有帮助。
我有一个变量被传递到一个函数中,然后我打算复制,执行一些计算,获取另一个副本,执行一些其他计算,然后比较两个副本的结果......
然而,当我在一个副本上执行计算时,原始变体也被操纵...所以在两个副本和两个计算后,我最终得到3个彼此相等且与原始不同的变体。不是我的意图。
我预计会发生这种情况,因为当我使用NewVar = OldVar
时我实际上是在引用原始对象。我真正想要的是对原始对象进行独立复制 - 即在函数说明中复制类似于byval的变量值。
我的代码链接在此处:https://1drv.ms/x/s!AiPgb0BH-YZ_ga956eMmJbSdihGjyg。
如果你在modMain的第67行放假,那么观看CutList(1).QTY
(原始变量)和CutTrial.RemainingCuts(1).QTY
你会看到当你逐步走线时两个QTY值都会减少67 ...我希望CutList(1).QTY
保持不变,CutTrial.RemainingCuts(1).QTY
仅限于。{/ p>
有什么建议吗?
答案 0 :(得分:0)
确保功能定义如下
公共函数DoMagic(ByVal变量作为某些东西)
不要使用ByRef,或者您发现它会修改参考。
如果您使用的是对象,数组或集合,则需要先使用它进行复制。
例如以下内容:
Public Function Clone() As Class1
Set Clone = New Class1
Clone.prop1 = prop1
Clone.PrivateThing = PrivateThing
End Function