似乎调用以数组为参数的函数时,如果未使用返回值,则不会更新数组(通过引用调用)。这是一个错误还是我遗漏了什么?下面是一个简短的测试宏,其生成的输出如下:
Sub Makro1()
'
' Makro1 Makro
'
' Kortkommando: Ctrl+t
'
Dim xyzArray() As Double
ReDim xyzArray(1 To 3)
xyzArray(1) = 1
xyzArray(2) = 2
xyzArray(3) = 3
Range("D2:F2").Value = xyzArray
TestFunction (xyzArray)
Range("D3:F3").Value = xyzArray
newXYZ = TestFunction(xyzArray)
Range("D4:F4").Value = xyzArray
TestSub xyzArray
Range("D5:F5").Value = xyzArray
TestFunction (xyzArray)
Range("D6:F6").Value = xyzArray
TestFunctionNoReturn (xyzArray)
Range("D7:F7").Value = xyzArray
End Sub
Private Function TestFunction(XYZ) As Double()
XYZ(1) = XYZ(1) + 1
XYZ(2) = XYZ(2) + 1
XYZ(3) = XYZ(3) + 1
TestFunction = XYZ
End Function
Private Sub TestSub(XYZ)
XYZ(1) = XYZ(1) + 1
XYZ(2) = XYZ(2) + 1
XYZ(3) = XYZ(3) + 1
End Sub
Private Function TestFunctionNoReturn(XYZ) As Double()
XYZ(1) = XYZ(1) + 1
XYZ(2) = XYZ(2) + 1
XYZ(3) = XYZ(3) + 1
End Function