我已经将一个变量作为参数传递给VBA函数,但只引用了函数中的参数,而不是原始变量。看来原始变量正在被函数修改,这意味着它共享相同的地址空间?这里发生了什么,我如何防止它发生?传递给函数的VBA变量被修改
下面是函数:(单位,数十,数百,数千的全局整型变量)
Function Components(qty As Integer, stringSize As Integer)
If qty < stringSize Then
units = qty
ElseIf qty >= stringSize * 100 Then
thousands = qty \ (stringSize * 100)
qty = qty - (thousands * stringSize * 100)
Components qty, stringSize
ElseIf qty >= stringSize * 10 Then
hundreds = qty \ (stringSize * 10)
qty = qty - (hundreds * stringSize * 10)
Components qty, stringSize
ElseIf qty >= stringSize Then
tens = qty \ (stringSize)
qty = qty - (tens * stringSize)
Components qty, stringSize
End If
End Function
我这样称呼它使用其他功能
Components charQty, 26
其中charQty = 565时,作为参数传递给组件,并且在组件完成后charQty = 19。我通过在函数调用之前和之后立即打印值来确定这一点。
我对VBA相当陌生。任何帮助将不胜感激。
的参数隐式[通过由参考](VBA中的“ByRef”)(https://stackoverflow.com/documentation/vba/7363/passing-arguments-byref-or-byval/24427/byref#t=201706020439138540139)。考虑[按值传递](https://stackoverflow.com/documentation/vba/7363/passing-arguments-byref-or-byval/28511/byval#t=201706020440066200781)。 –