[quote user="Mark Smith"]My understanding is that Point3D is 3 doubles in sequence[/quote]
More correctly, a User Defined Type (UDT). You'll find it in VBA help.
[quote user="Mark Smith"]I'm not sure if .Move is expecting the actuall values, or a reference to them[/quote]
UDTs are always passed by ByRef, which is VBA's default. If you attempt to pass a UDT ByVal, you get the error message you see.
[quote user="Mark Smith"]Any suggestions [/quote]
Rather than
Dim mPt(0 To 2) As Double
You could define your own UDT (but I don't know if that will fool VBA)...
Public Type myPoint3d X As Double Y As Double Z As Double End Type