View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming,microsoft.public.office.developer.vba
TJ Walls TJ Walls is offline
external usenet poster
 
Posts: 19
Default Delete Worksheet on DeActivate

Hello All,

I have a worksheet that is created at run-time that displays just some
temporary graphs to the user. I would like to delete this worksheet once
the user changes focus back to another sheet in the workbook.

My original idea was to hook in an event handler for the
Worksheet_DeActivate event. The code looked like (don't have the exact
code with me, but the idea):

[Public Class Module clsWks]
Public WithEvents oWks As Excel.Worksheet

Private Sub oWks_DeActivate()
DeleteWorksheet
'OR
'Me.oWks.Delete
End Sub


[Module TestClass]
Dim gWksCol as New Collection

Private Sub CreateSheet()
Dim oWksEvts As clsWks

Set oWksEvts = New clsWks
Set oWksEvts.oWks = Worksheets.Add

...

gWksCol.Add oWksEvts
End Sub

Sub DeleteWorksheet()
gWksCol(1).oWks.Delete
gWksCol.Remove 1
End Sub

The code craps out with a run-time error both when calling
DeleteWorksheet or Me.oWks.Delete in the DeActivate event. I think this is
beacuse the delete method seems to re-fire the DeActivate event on the
worksheet which has already been deleted.

Is there a better way to delete a worksheet when it is no longer the
ActivateSheet? Is it better to hook into the WorkBook_SheetChange event,
or is this the correct path and I've just done something silly?

Thanks,
TJ Walls
Ph.D. Candidate - Dept of Physics, Stony Brook University