XL98: Deactivate Event Doesn't Occur After Moving Sheet (188498)



The information in this article applies to:

  • Microsoft Excel 98 Macintosh Edition

This article was previously published under Q188498

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. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to 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 requirements. 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 OPTION+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 Deactivate event, from the Visual Basic Editor, 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:

176476 OFF: Office Assistant Not Answering Visual Basic Questions


Modification Type:MajorLast Reviewed:6/17/2005
Keywords:kbbug kbdtacode kbnofix kbProgramming KB188498