Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

XL2000: How to Use EnableEvents to Disable Event Handling


View products that this article applies to.

Summary

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

↑ Back to the top


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 professionals 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 a Microsoft Certified Partner or Microsoft Advisory Services. For more information, visit these Microsoft Web sites:

Microsoft Certified Partners - https://partner.microsoft.com/global/30000104

Microsoft Advisory Services - http://support.microsoft.com/gp/advisoryservice

For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Create 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.

Set Up the Event Handler

  1. Close and save any open workbooks, and then create a new workbook.
  2. Start the Visual Basic Editor (press ALT+F11).
  3. If the Project Explorer window is not visible, click Project Explorer on the View menu.
  4. In the Project Explorer window, double-click Sheet1 to open the Code window for Sheet1.
  5. In the Code window for Sheet1, type or paste the following code for the SelectionChange event:
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
        MsgBox ActiveCell.Address
    End Sub
    					
  6. Switch to Microsoft Excel (ALT+F11).
  7. Select any cell on Sheet1.
When you click a cell on Sheet1, a message box displays the cell address of the selected cell.

Use a Procedure to Run the Event Handler

The following sample macro runs the event handler:
  1. Using Sheet1 from the previous procedure, start the Visual Basic Editor (press ALT+F11).
  2. On the Insert menu, click Module.
  3. Type or paste the following code into the Visual Basic module:
    Sub FireEvent()
        For X = 1 To 5
            Cells(X, 1).Select
        Next X
    End Sub
    					
  4. Switch to Microsoft Excel (ALT+F11).
  5. On the Tools menu, point to Macro, and then click Macros. In the Macro dialog box, click FireEvent, and then click Run.
A message box appears every time the FireEvent macro selects a cell on Sheet1.

Prevent the Event Procedure from Running

To prevent an event handler from running while a macro is running, set the EnableEvents property to False; to do so, follow these steps:
  1. Using Sheet1 from the previous procedures, start the Visual Basic Editor (press ALT+F11).
  2. On the Insert menu, click Module.
  3. Type or paste the following macro in the module:
    Sub DisableEvent()
    
       '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 ALT+F11).
  5. On the Tools menu, point to Macro, and then click Macros. In the Macros dialog box, click DisableEvent, and then click Run.
No message boxes appear while the macro is running. 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.

↑ Back to the top


References

For more information about using event handlers, in the Visual Basic Editor, click Microsoft Visual Basic Help on the Help menu, type using events with microsoft excel objects in the Office Assistant or the Answer Wizard, and then click Search to view the topic.

↑ Back to the top


Keywords: KB213720, kbprogramming, kbhowto

↑ Back to the top

Article Info
Article ID : 213720
Revision : 8
Created on : 11/23/2006
Published on : 11/23/2006
Exists online : False
Views : 289