Parece que chamar uma função com um array como parâmetro não atualiza o array (chamada por ref) se um valor de retorno não for usado. Isso é um bug ou estou esquecendo de algo aqui? Uma pequena macro de teste com a saída gerada abaixo:
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