ACC: How to Call Functions Using a String Variable

Last reviewed: August 29, 1997
Article ID: Q100164
The information in this article applies to:
  • Microsoft Access versions 1.0, 1.1, 2.0, 7.0, 97

SUMMARY

Moderate: Requires basic macro, coding, and interoperability skills.

This article describes how Visual Basic for Application or user-defined functions can be called when the function name is stored in a string variable. This method provides a functionality similar to that of pointers to functions in other programming languages.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

NOTE: Visual Basic for Applications is called Access Basic in Microsoft Access versions 1.x and 2.0. For more information about Access Basic, please refer to the "Introduction to Programming" manual in Microsoft Access version 1.x or the "Building Applications" manual in Microsoft Access version 2.0

MORE INFORMATION

To allow significant programming flexibility, you can call a function in Visual Basic for Applications when the function name is stored in a variable. This technique is demonstrated in the following example:

  1. Create a new, blank database.

  2. Create a module and type the following line in the Declarations section:

          Option Explicit
    

  3. Type the following procedures:

    NOTE: In the following sample code, an underscore (_) at the end of a line is used as a line-continuation character. Remove the underscore from the end of the line when re-creating this code in Access Basic.

          '------------------------------------------------------------------
          'GLOBAL DECLARATIONS SECTION
          '------------------------------------------------------------------
          Option Explicit
    

          '------------------------------------------------------------------
          ' The CallMyArray() function creates an array of strings, then
          ' loops, using the Eval() function, to call each element of the
          ' array.
          '------------------------------------------------------------------
          Function CallMyArray ()
    
             Dim MyArray$(), i as Integer, x as Integer
    
              For i = 0 To 2
                 ReDim Preserve MyArray$(i)
                 MyArray$(i) = "MyFunc" & i & "(" & i & ")"
              Next i
    
              For i = 0 To 2
                  x = Eval(MyArray(i))
              Next i
          End Function
    
          '------------------------------------------------------------------
          '    The first function called by CallMyArray().
          '------------------------------------------------------------------
          Function MyFunc0 (nParam)
             MsgBox "This is function: " & nParam
          End Function
    
          '------------------------------------------------------------------
          '    The second function called by CallMyArray().
          '------------------------------------------------------------------
          Function MyFunc1 (nParam)
             MsgBox "This is function: " & nParam
          End Function
    
          '------------------------------------------------------------------
          '    The third function called by CallMyArray().
          '------------------------------------------------------------------
          Function MyFunc2 (nParam)
             MsgBox "This is function: " & nParam
          End Function
    
    

  4. Type the following line in the Debug Window (or Immediate Window in versions 1.x and 2.0):

           ? CallMyArray()
    

REFERENCES

For more information about the Eval() function, search for "eval," and then "Eval function" using the Microsoft Access 97 Help Index.


Additional query words: string eval
Keywords : kbprg PgmHowTo PgmOthr
Version : 1.0 1.1 2.0 7.0 97
Platform : WINDOWS
Hardware : x86
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.

Last reviewed: August 29, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.