View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Doug Glancy Doug Glancy is offline
external usenet poster
 
Posts: 770
Default Stopping Deactivation of a Worksheet

Bill,

As far as I know, you can't cancel the deactivate event. I'm assuming you
don't just want to reactivate A, and that you have B activate code that you
want to skip. If so, I think you should use a module-level variable, set in
Sheet Activate as to whether the total was changed, like this maybe:

Dim Sheet1_deactivate_cancel As Boolean 'module-level

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Sheet1_deactivate_cancel = False
If Sh.Name = "Sheet1" Then
If Sh.Range("A1") = "no" Then replace with your changed_total check
Sheet1_deactivate_cancel = True
Me.Activate
End If
End If
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Sheet2" And Not Sheet1_deactivate_cancel Then
MsgBox "Sheet2 activated" 'replace with the code you want skipped if A
total changed
End If
End Sub

If you just want to return to sheet A, and there is no sheet B activation
code to skip, then I think you only need this:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Sheet1" And Sh.Range("A1") = "no" Then 'substitute your
changed_total check here
Me.Activate
End If
End Sub

hth,

Doug

"BillCPA" <Bill @ UAMS wrote in message
...
When I leave Worksheet A for Worksheet B, the Deactivate Event for
Worksheet
A does a calculation to see if a total on Worksheet A has changed. If it
has, I would like to cancel the deactivation of Worksheet A and still have
it
my active worksheet. Is there some way to accomplish this in the
Worksheet A
Deactivate Event? Or somewhere else?

--
Bill @ UAMS