ACC2: DeleteObject Action Causes "Illegal Function Call" Msg

ID: Q122712


The information in this article applies to:


SYMPTOMS

Advanced: Requires expert coding, interoperability, and multiuser skills.

When you use the DeleteObject action in Access Basic code to delete a module, you may receive the error message "Illegal function call." When you use this action in a macro, the module is deleted correctly.


CAUSE

When Microsoft Access runs an Access Basic function, it loads all modules into memory. If you add or delete a function, Microsoft Access must recompile the code, but it cannot do so while the code is running.


RESOLUTION

In Microsoft Access version 7.0, the following function correctly deletes a module:


   Function DelModule()
      DoCmd.DeleteObject A_MODULE, "Delete Test"
   End Function 
Note that DeleteObject will enable you to delete any module, including the module which contains the DelModule() function.


STATUS

This behavior no longer occurs in Microsoft Access version 7.0.


MORE INFORMATION

Steps to Reproduce Behavior

  1. Create a new module.


  2. Enter the following function in the module:


  3. 
          Function DelModule()
             DoCmd DeleteObject A_MODULE, "Delete Test"
          End Function 
  4. Save the module as Test.


  5. Create another new module.


  6. Enter the following function in the module:


  7. 
          Function TestFunction()
              MsgBox "Test Function"
          End Function 
  8. Save the module as Delete Test.


  9. From the View menu, choose Immediate window.


  10. In the Immediate window, type the following line, and then press ENTER:
    
    ? DelModule() 
    Note that you receive the error message mentioned earlier in this article.



Keywords          : kberrmsg kbprg PgmObj 
Version           : 2.0
Platform          : WINDOWS 
Issue type        : kbprb 

Last Reviewed: June 4, 1999