VBA将值(仅)分配给变量

时间:2017-02-06 22:13:43

标签: vba excel-vba excel

我遇到了障碍,到目前为止我的搜索还没有帮助。

我有一个变量被传递到一个函数中,然后我打算复制,执行一些计算,获取另一个副本,执行一些其他计算,然后比较两个副本的结果......

然而,当我在一个副本上执行计算时,原始变体也被操纵...所以在两个副本和两个计算后,我最终得到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>

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

确保功能定义如下

公共函数DoMagic(ByVal变量作为某些东西)

不要使用ByRef,或者您发现它会修改参考。

如果您使用的是对象,数组或集合,则需要先使用它进行复制。

例如以下内容:

Public Function Clone() As Class1
Set Clone = New Class1
Clone.prop1 = prop1
Clone.PrivateThing = PrivateThing
End Function