Microsoft KB Archive/143426

= How To VB3: Pass an Array of Controls to a SUB or FUNCTION =

Article ID: 143426

Article Last Modified on 7/15/2004

-

APPLIES TO


 * Microsoft Visual Basic 3.0 Professional Edition

-



This article was previously published under Q143426



SUMMARY
In Microsoft Visual Basic version 3.0 for Windows, it is not possible to pass a control array to a user defined SUB or FUNCTION. You can only pass elements of a control array.



WORKAROUND
In order to work around this limitation, you can create an array of specific objects and pass this array to a Sub or Function.

Step-by-Step example
The following example converts the content of all the Textboxes on a form to upper-case characters when the user clicks on the Command Button.

 Start Visual Basic for Windows. If Visual Basic is already running, click New Project on the File menu (ALT+F+N). Form1 is created by default. Add a Command Button named Command1 to the form. Add 3 text boxes to the form named Text1.  Add the following code to the general declarations section of Form1: Sub AllUcase(txt As TextBox) Dim i As Integer For i = LBound(txt) To UBound(txt) txt(i) = UCase(txt(i)) Next i     End Sub   In the Command1_Click event of Form1, add the following code: Sub Command1_Click On Error Resume Next Dim i As Integer Dim Again As Integer ReDim Tabtxt(0) As TextBox

i = 0 Again = True While Again Text1(i).Tag = Text1(i).Tag If Err = 0 Then Redim Preserve TabTxt(0 To i)           Set TabTxt(i) = Text1(i) Else Again = False End If         i = i + 1 Wend Call AllUcase(TabTxt) End Sub  Press ALT+F+V to save the project. Then press F5 to run the program. Click once on the form and exit the application. Once the program is running, enter values in the different text boxes and click on the Command1 button.</li></ol>

In Visual Basic 4.0, a control array can be passed as an Object. The following code passes a control array of TextBoxes, and adds another TextBox to the control array. The call to the SUB would be as follows: AddControlArrayElement Text1 The code in the procedure would be as follows: Sub AddControlArrayElement (ControlArray as Object) NextElement% = ControlArray.Count Load ControlArray(NextElement%) ControlArray(NextElement%).Top = ControlArray(NextElement%-1).Top+100 ControlArray(NextElement%).Visible=True End Sub

Keywords: kbhowto KB143426

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.