DOCUMENT:Q186143 11-AUG-1998 [vbwin] TITLE :HOWTO: Use the CallByName Function to Run a Procedure PRODUCT :Microsoft Visual Basic for Windows PROD/VER: OPER/SYS:WINDOWS KEYWORDS: ====================================================================== --------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual Basic Learning, Professional, and Enterprise Editions for Windows, version 6.0 --------------------------------------------------------------------- SUMMARY ======= The CallByName function provides Visual Basic 6.0 with the ability to call a property or method of an object using a string at run-time. Unlike the previous versions of Visual Basic in which methods and properties had to be known at design-time, the CallByName function allows for a great deal of flexibility at run-time. The use of this function is limited to OLE servers and Visual Basic class modules. MORE INFORMATION ================ The following sample demonstrates how to use the CallByName function to call a method, a Property Let, and a Property Get. For more information on the CallByName function, please refer to the Visual Basic Help Files and the Books On-Line. Steps to Create Sample Project ------------------------------ 1. Start a new Standard EXE project in Visual Basic. Form1 is created by default. 2. Add a Class Module (Class1) to the project. 3. Add the following code to the Class Module: Option Explicit Private MyPropValue As Integer Public Function Multiply(x As Integer, y As Integer) As Integer Multiply = x * y End Function Public Property Get MyProperty() As Variant MyProperty = MyPropValue End Property Public Property Let MyProperty(ByVal vNewValue As Variant) MyPropValue = vNewValue End Property 4. Add the following code to the Form Module (Form1): Option Explicit Private Sub Form_Click() Dim myclass As New Class1 Dim sum As Integer Dim prop As Integer ' Example of calling a method with CallByName ' equivalent to -- sum = myclass.Multiply(12, 12) sum = CallByName(myclass, "Multiply", VbMethod, 12, 12) MsgBox sum ' Example of a property let with CallByName ' equivalent to -- myclass.MyProperty = 5 CallByName myclass, "MyProperty", VbLet, 5 ' Example of a property get with CallByName ' equivalent to -- prop = myclass.MyProperty prop = CallByName(myclass, "MyProperty", VbGet) MsgBox prop End Sub 5. Run the Project and click on Form1. A message box displaying the number 144 and a message box displaying the number 5 are shown in succession. Additional query words: kbDSupport kbDSD kbVBA kbVBp600 kbVBp ====================================================================== Platform : WINDOWS Issue type : kbhowto ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 1998.