ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
KWKeaton Warn07/05/2019

After scavenging Google and coming up with very few relevant results, thought it would be worth asking here. Perhaps VBA is limited in this regard?

I realize a global, multidimensional array can be declared and initialized in a function, and then read/manipulated in Main or other functions. To me that's a valid workaround for some situations but not all.

Here's the workaround for anybody interested.

Option Explicit

Dim swApp As Object

Dim prArray(1, 2) As String

'It doesn't seem like VBA allows functions to return multidimensional arrays.

'A workaround is to declare a global multidimensional array and initialize it in another function or sub.

Sub main()

Set swApp = Application.SldWorks

'-------------------------------------------------------

Dim MyArray(2, 3) As Integer

Dim i As Long

Dim j As Long

i = 0

j = 0

Dim strArrayReturned(1, 2) As String

PassandReturn

'strArrayReturned = PassandReturn Error. Can't assign to array.

For i = 0 To 1

For j = 0 To 2

Debug.Print "value of ("; i; ","; j; ") is: "; prArray(i, j)

Next j

Next i

Debug.Print ""; ""

End Sub

Function PassandReturn() As String()

'CURRENTLY GLOBAL Dim prArray(1, 2) As String

prArray(0, 0) = "pr 00"

prArray(0, 1) = "pr 01"

prArray(0, 2) = "pr 02"

prArray(1, 0) = "pr 10"

prArray(1, 1) = "pr 11"

prArray(1, 2) = "pr 12"

PassandReturn = prArray

End Function