XL98: How to Use EnableEvents to Disable Event Handling

Last reviewed: March 18, 1998
Article ID: Q182697
The information in this article applies to:
  • Microsoft Excel 98 Macintosh Edition

SUMMARY

In Microsoft Excel 98 Macintosh Edition, you can create event handlers, which are Visual Basic for Applications macros that respond to specific events. An event handler can be run by another Visual Basic macro. This article contains an example macro that disables event handling while a Visual Basic for Applications macro is running.

MORE INFORMATION

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs. If you have limited programming experience, you may want to contact the Microsoft fee-based consulting line at (800) 936-5200. For more information about the support options available from Microsoft, please see the following page on the World Wide Web:

   http://www.microsoft.com/support/supportnet/refguide/default.asp

Creating a Sample Event Procedure

In this example you set up a Visual Basic for Applications macro that responds to the SelectionChange event in a worksheet. To set up the event handler, follow these steps:

  1. Close and save any open workbooks, and then create a new workbook.

  2. Start the Visual Basic Editor (press OPTION+F11).

  3. If the Project Explorer window is not visible, click Project Explorer on the View menu.

  4. Double-click Sheet1 to open the Code window for Sheet1.

  5. In the Code window for Sheet1, enter the following code for the SelectionChange event:

          Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    
              MsgBox Target.Address
          End Sub
    
    

  6. Switch to Microsoft Excel (press OPTION+F11).

  7. Click any cell on Sheet1.

When you click a cell on Sheet1, a message box displays the cell address of the selected cell.

Using a Procedure to Run the Event Handler

The following sample macro runs the event handler. To set up the macro, follow these steps:

  1. Start the Visual Basic Editor (press OPTION+F11).

  2. On the Insert menu, click Module.

  3. Enter the following code into the Visual Basic module:

          Sub FireEvent()
              Dim X as Integer
              For X = 1 To 5
                  Cells(X, 1).Select
              Next X
          End Sub
    
    

  4. Switch to Microsoft Excel (press OPTION+F11).

  5. On the Tools menu, point to Macro, and then click Macros. Then, click FireEvent and click Run.

A message box appears every time the FireEvent macro selects a cell on Sheet1.

Preventing the Event Procedure from Running

To prevent an event handler from running while a macro is running, set the EnableEvents property to False. To use the EnableEvents property in an example, follow these steps:

  1. Start the Visual Basic Editor (press OPTION+F11).

  2. On the Insert menu, click Module.

  3. Type the following macro in the module:

          Sub DisableEvent()
             Dim X As Integer
    
             ' Disable all event firing.
             Application.EnableEvents = False
    
             For X = 1 To 5
                Cells(X, 1).Select
             Next X
    
             ' Re-enable all event firing.
             Application.EnableEvents = True
          End Sub
    
    

  4. Switch to Microsoft Excel (press OPTION+F11).

  5. On the Tools menu, point to Macro, and click Macros. Then, click DisableEvent and click Run.

No message boxes appear during the execution of the macro. This indicates that the SelectionChange event is not running. If you select another cell on Sheet1 after the DisableEvent macro is finished running, the event handler is active again and a message box appears.

NOTE: If you do not set the EnableEvents property to True before your macro finishes running, events are disabled. If you set the EnableEvents property to False, make sure that you set it back to True.

REFERENCES

For more information about using event handlers, click the Office Assistant in the Visual Basic Editor, type "events" (without the quotation marks), click Search, and then click to view the "Using events with Microsoft Excel objects" topic.

NOTE: If the Assistant is hidden, click the Office Assistant button on the Standard toolbar. If Microsoft Help is not installed on your computer, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q179216
   TITLE     : OFF98: How to Use the Microsoft Office Installer Program


Additional query words: XL98
Keywords : kbprg kbdta kbdtacode xlvbahowto
Version : MACINTOSH:98
Platform : MACINTOSH
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: March 18, 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.