Microsoft KB Archive/188498

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

Article ID: 188498

Article Last Modified on 6/17/2005

-

APPLIES TO


 * Microsoft Excel 98 for Macintosh

-



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:

 Save and close any open workbooks, and then create a new workbook. Start the Visual Basic Editor (press OPTION+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">