XL97: Deactivate Event Doesn't Occur After Moving Sheet

ID: Q161836

The information in this article applies to:

SYMPTOMS

When you create a macro with a Deactivate event that applies to a worksheet, and you move the worksheet to another workbook, the Deactivate event macro for the worksheet does not occur.

CAUSE

This problem occurs because the Deactivate event does not occur for the worksheet. The Deactivate event occurs when an object is no longer the active window. When you move the worksheet to another workbook, the worksheet is still the active worksheet. After you select another worksheet in the workbook into which you moved the worksheet, the Deactivate event occurs.

NOTE: When you move a worksheet to another workbook, the SheetDeactivate event for the Workbook object also does not occur.

RESOLUTION

Instead of using either the Deactivate event for the worksheet or the SheetDeactivate event for the workbook, use the WindowDeactivate event for the workbook to trap the movement of the worksheet.

STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article.

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 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/

The following sample macro traps the WindowDeactivate event for the workbook:

  1. Save and close 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 displayed, click Project
     Explorer on the View menu.

  4. In the Project Explorer window, double-click ThisWorkbook for the
     current project.

     This step displays the Code module that is associated with the
     workbook.

  5. In the Object list, click Workbook.

     This step displays a subprocedure for the Open event for the workbook.

  6. In the Procedure list, click WindowDeactivate.

     This step displays a subprocedure for the WindowDeactivate event for
     the workbook.

  7. Type the following code, so the subprocedure appears as follows:

        Private Sub Workbook_WindowDeactivate(ByVal Wn As Excel.Window)

            MsgBox "You deactivated the previous window."

        End Sub

  8. On the File menu, click "Close and Return to Microsoft Excel."

  9. Click New on the Standard toolbar to open another new workbook.

     A message box appears with the following message:

        You deactivated the previous window.

 10. Click OK to close the message box.

     The workbook you opened is the active workbook.

 11. Switch to the other workbook (the workbook you opened in step 1).

 12. Move Sheet1 from this workbook to the workbook you opened in step 9.

     A message box appears with the following message:

        You deactivated the previous window.

     Note that Sheet1 is in the second workbook.

 13. Click OK to close the message box.

REFERENCES

For more information about the Deactivate event, click the Office Assistant, type "deactivate," click Search, and then click to view "Deactivate Event."

NOTE: If the Assistant is hidden, click the Office Assistant button on the Standard toolbar. If the Assistant is not able to answer your query, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q176476
   TITLE     : OFF: Office Assistant Not Answering Visual Basic Questions

Additional query words: XL97
Keywords          : kbprg kbdta kbdtacode xlui KbVBA 
Version           : WINDOWS:97
Platform          : WINDOWS
Issue type        : kbbug
Solution Type     : kbnofix

Last Reviewed: May 18, 1999