Microsoft KB Archive/161836

= XL97: Deactivate Event Doesn't Occur After Moving Sheet =

Article ID: 161836

Article Last Modified on 11/23/2006

-

APPLIES TO


 * Microsoft Excel 97 Standard Edition

-



This article was previously published under Q161836





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 a Microsoft Certified Partner or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Partners, please visit the following Microsoft Web site:

https://partner.microsoft.com/global/30000104

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

The following sample macro traps the WindowDeactivate event for the workbook:  Save and close any open workbooks, and then create a new workbook. Start the Visual Basic Editor (press ALT+F11). If the Project Explorer window is not displayed, click Project Explorer on the View menu. In the Project Explorer window, double-click ThisWorkbook for the current project.

This step displays the Code module that is associated with the workbook. In the Object list, click Workbook.

This step displays a subprocedure for the Open event for the workbook.</li> In the Procedure list, click WindowDeactivate. This step displays a subprocedure for the WindowDeactivate event for the workbook.</li>  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 </li> On the File menu, click "Close and Return to Microsoft Excel."</li> Click New on the Standard toolbar to open another new workbook.

A message box appears with the following message:

You deactivated the previous window.

</li> Click OK to close the message box.

The workbook you opened is the active workbook.</li> Switch to the other workbook (the workbook you opened in step 1).</li> 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.</li> Click OK to close the message box.</li></ol>

<div class="references_section">