Microsoft KB Archive/84383

= PRB: Property or Control Not Found Error Passing Control to Sub =

Article ID: 84383

Article Last Modified on 12/12/2003

-

APPLIES TO


 * Microsoft Visual Basic 2.0 Standard Edition
 * Microsoft Visual Basic 3.0 Professional Edition
 * Microsoft Visual Basic 2.0 Professional Edition
 * Microsoft Visual Basic 3.0 Professional Edition
 * Microsoft Visual Basic 1.0 Standard Edition

-



This article was previously published under Q84383





SYMPTOMS
Using form.control.property to access the property of a control causes a &quot;Property or Control not found&quot; error.



CAUSE
The control was passed to the Sub or Function procedure incorrectly.



RESOLUTION
To reference a control in a Sub or Function procedure, do not pass the form and then the control; just pass the control. Then once you pass the control to the Sub or Function procedure, do not prefix the control name with the parent form name when accessing a property of the control inside the Sub or Function procedure.



How to Pass a Control to a Sub or Function Procedure
To pass a control to a Sub or Function procedure, provide the parameter by specifying Formname.Controlname or just Controlname as in this example: Sub Test(x As Control) X.Caption = &quot;hello&quot; End Sub

Call Test(Form1.Label1)

-or-

Call Test(Label1) Either way, the appropriate information is passed to the Sub procedure. How you call it depends on where you call it.

How to Pass a Form to a Sub or Function Procedure
When you pass a parameter As Form, the Sub procedure expects the item following the form variable to be a property of that form object: Sub Test(x As Form) X.Caption = &quot;hello&quot; End Sub

Call Test(Form1) The item that follows X must be a property of the form variable X.

Referencing a Property of a Control When the Control is Not Passed
The full syntax to access a property of a control on a form is: form.control.property If the control whose property you are accessing is on the form where the code resides, you do not need to prefix the control name with the form name. For example, if command button Command1 is on Form1 and you want to set its Enabled property to False (0) in the event procedure Command1_Click, you can use the following: Command1.Enabled = 0 You can use the same syntax if the statement is in the general Declarations section of Form1.

However, if you want to access the Enabled property of a Command1 control that resides on a form other than its parent form, or if you want to access that property from a Sub or Function procedure in a module without passing the control to the procedure, use the full syntax with the form name.

For example, to disable Command1, which is on Form1, in MODULE1.BAS, add the following code: Sub AccessProperty Form1.Command1.Enabled = 0 End Sub

Additional query words: 2.00 3.00

Keywords: kbprb KB84383

-

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

© Microsoft Corporation. All rights reserved.