I've written a lot of code in QuickBasic 4.5 and have finally decided to learn Visual Basic. I'm using VB 4.0 which I bought a long time ago, but for learning purposes I figure it's good enough for now. It all looks pretty straightforward, but my problem comes when passing arrays as arrguments between subprocedures. An array declared dynamically as, say, "Dim arrayName() As Single" and listed in the sub's parameter list as "arrayName()" seems perfectly acceptable to VB's grammar checker, but when I try to call the sub using "arrayName()" as an argument I get a "type mis-match: array or user-defined type expected" warning. In my experience, using the array's name followed by empty parentheses has always worked for passing arrays between subs. As VB seems to accept most of QBASIC's syntax, I'm puzzled by this problem, especially since passing arrays between subs seem so fundamental. Does anyone have an answer? Thanks very much in advance.

13 Years
Discussion Span
Last Post by Paladine

OK, not quite sure what you are saying, so let me see if this helps.

Passing Arrays as Parameters

1. Reference the array by name in the CALL statement
2. The called SUB/FUNCTION MUST accept the data into a parameter declared with the SAME data type, but without an index.
3. Arrays must be passed using the ByRef Method.


Public Sub ProcTest(By Ref lngNum() as Long)
   lngNum(1) = 2
End Sub

Public Sub Something()
  Dim lngArray(1 To 5) as Long
  Call ProcTest(lngArray)
  MsgBox("Index 1 = " & lngArray(1))
End Sub

Hope this helps?! :lol:

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.