Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Event: Workbook_SheetDelete

Abbreviated Question #1:
Is there an event such as "Workbook_SheetDelete" in existence that I
could use? I found a "Workbook_SheetNew," so I figured there would be
a counterpart. I need my code to execute whenever a worksheet is
deleted.

Abbreviated Question #2:
Where do I put the event code? In "ThisWorkbook" under "Microsoft
Excel Objects" or somewhere else?

---------------------------------------------------------------------
Extended Explanation for Question #1 and #2:
(You only need to read the text below if it will help you answer my
questions)

My workbook has a sheet that is "VeryHidden." For the sake of
avoiding confusion, I shall call this sheet by its CodeName: Sheet1.
Sheet1 keeps track of sheets I create after Sheet6 and looks something
like this:

No. Name CodeName
1 Cap Sheet7
2 Bottle Sheet8
3 Label Sheet9

Another sheet is dependent on Sheet1 and due to the way I have written
the code it is imperative that there are no empty cells in between rows
like this:

No. Name CodeName
1 Cap Sheet7

3 Label Sheet9

The user has the option of deleting a sheet. Say, they delete Sheet8
(No. 2, Bottle). I would like, upon the act of deletion, for this
sheet to update itself to look like this:

No. Name CodeName
1 Cap Sheet7
2 Label Sheet9

I don't care to change the CodeName, but changing the number ("No.")
would be nice.

The code I am planning on using (referenced from another post in Google
Groups) to delete the empty row is:

Private Sub Worksheet_Delete()

Sheet1.Select
activesheet.Columns("A").SpecialCells _
(xlCellTypeBlanks).EntireRow.Delete

End Sub

It works perfectly because Column A will always contain the header,
"No." Part of my code elsewhere temporarily makes Sheet1
"Visible" to run my macros, so Sheet1 being "VeryHidden" should
also not be an issue.

Question #1:
What I am looking for is a way to activate "Worksheet_Delete" whenever
a worksheet is deleted, but I am not aware of a any such Worksheet or
Workbook event. The closest thing I found was
"Workbook_SheetDeactivate." There is also an event called
"Workbook_SheetNew," therefore I figured there would be a counterpart;
perhaps something like "Workbook_SheetDelete." To the best of my
knowledge, the code contained between:

Private Sub Workbook_SheetDeactivate()
...
End Sub

will run whenever a worksheet is deactivated. Correct me if I am
mistaken.

I realize this could all be simplified by adding a button, but I do not
want to burden the user with more buttons. Any suggestions would be
greatly appreciated.

Question #2:
Also, I am not extremely proficient with VB, so I am unsure of where to
place the code for an event such as "Workbook_SheetDeactivate." Should
it be place in "ThisWorkbook" under "Microsoft Excel Objects" or
somewhere else?

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 770
Default Event: Workbook_SheetDelete

Han,

There is no such event, but you can use the Sheet Activate event to track it
after it's happened. Do a search in Google Groups on "sheet delete event
excel" to read past replies about this from Chip Pearson and others.

hth,

Doug

"Han" wrote in message
oups.com...
Abbreviated Question #1:
Is there an event such as "Workbook_SheetDelete" in existence that I
could use? I found a "Workbook_SheetNew," so I figured there would be
a counterpart. I need my code to execute whenever a worksheet is
deleted.

Abbreviated Question #2:
Where do I put the event code? In "ThisWorkbook" under "Microsoft
Excel Objects" or somewhere else?

---------------------------------------------------------------------
Extended Explanation for Question #1 and #2:
(You only need to read the text below if it will help you answer my
questions)

My workbook has a sheet that is "VeryHidden." For the sake of
avoiding confusion, I shall call this sheet by its CodeName: Sheet1.
Sheet1 keeps track of sheets I create after Sheet6 and looks something
like this:

No. Name CodeName
1 Cap Sheet7
2 Bottle Sheet8
3 Label Sheet9

Another sheet is dependent on Sheet1 and due to the way I have written
the code it is imperative that there are no empty cells in between rows
like this:

No. Name CodeName
1 Cap Sheet7

3 Label Sheet9

The user has the option of deleting a sheet. Say, they delete Sheet8
(No. 2, Bottle). I would like, upon the act of deletion, for this
sheet to update itself to look like this:

No. Name CodeName
1 Cap Sheet7
2 Label Sheet9

I don't care to change the CodeName, but changing the number ("No.")
would be nice.

The code I am planning on using (referenced from another post in Google
Groups) to delete the empty row is:

Private Sub Worksheet_Delete()

Sheet1.Select
activesheet.Columns("A").SpecialCells _
(xlCellTypeBlanks).EntireRow.Delete

End Sub

It works perfectly because Column A will always contain the header,
"No." Part of my code elsewhere temporarily makes Sheet1
"Visible" to run my macros, so Sheet1 being "VeryHidden" should
also not be an issue.

Question #1:
What I am looking for is a way to activate "Worksheet_Delete" whenever
a worksheet is deleted, but I am not aware of a any such Worksheet or
Workbook event. The closest thing I found was
"Workbook_SheetDeactivate." There is also an event called
"Workbook_SheetNew," therefore I figured there would be a counterpart;
perhaps something like "Workbook_SheetDelete." To the best of my
knowledge, the code contained between:

Private Sub Workbook_SheetDeactivate()
...
End Sub

will run whenever a worksheet is deactivated. Correct me if I am
mistaken.

I realize this could all be simplified by adding a button, but I do not
want to burden the user with more buttons. Any suggestions would be
greatly appreciated.

Question #2:
Also, I am not extremely proficient with VB, so I am unsure of where to
place the code for an event such as "Workbook_SheetDeactivate." Should
it be place in "ThisWorkbook" under "Microsoft Excel Objects" or
somewhere else?



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default Event: Workbook_SheetDelete

This code emulates it


Put this code in a standard code module

Public shName As String

'-----------------------------------------------------------------
Sub Deletesheet()
'-----------------------------------------------------------------
Dim oWS As Object
On Error Resume Next
Set oWS = Sheets(shName)
If oWS Is Nothing Then
MsgBox shName & " has been deleted"
End If
End Sub

Put this in ThisWorkbook

'-----------------------------------------------------------------
Private Sub Workbook_SheetDeactivate(ByVal sh As Object)
'-----------------------------------------------------------------
shName = sh.Name
Application.OnTime Now + TimeSerial(0, 0, 1), "DeleteSheet"
End Sub



--
HTH

Bob Phillips

(remove nothere from email address if mailing direct)

"Han" wrote in message
oups.com...
Abbreviated Question #1:
Is there an event such as "Workbook_SheetDelete" in existence that I
could use? I found a "Workbook_SheetNew," so I figured there would be
a counterpart. I need my code to execute whenever a worksheet is
deleted.

Abbreviated Question #2:
Where do I put the event code? In "ThisWorkbook" under "Microsoft
Excel Objects" or somewhere else?

---------------------------------------------------------------------
Extended Explanation for Question #1 and #2:
(You only need to read the text below if it will help you answer my
questions)

My workbook has a sheet that is "VeryHidden." For the sake of
avoiding confusion, I shall call this sheet by its CodeName: Sheet1.
Sheet1 keeps track of sheets I create after Sheet6 and looks something
like this:

No. Name CodeName
1 Cap Sheet7
2 Bottle Sheet8
3 Label Sheet9

Another sheet is dependent on Sheet1 and due to the way I have written
the code it is imperative that there are no empty cells in between rows
like this:

No. Name CodeName
1 Cap Sheet7

3 Label Sheet9

The user has the option of deleting a sheet. Say, they delete Sheet8
(No. 2, Bottle). I would like, upon the act of deletion, for this
sheet to update itself to look like this:

No. Name CodeName
1 Cap Sheet7
2 Label Sheet9

I don't care to change the CodeName, but changing the number ("No.")
would be nice.

The code I am planning on using (referenced from another post in Google
Groups) to delete the empty row is:

Private Sub Worksheet_Delete()

Sheet1.Select
activesheet.Columns("A").SpecialCells _
(xlCellTypeBlanks).EntireRow.Delete

End Sub

It works perfectly because Column A will always contain the header,
"No." Part of my code elsewhere temporarily makes Sheet1
"Visible" to run my macros, so Sheet1 being "VeryHidden" should
also not be an issue.

Question #1:
What I am looking for is a way to activate "Worksheet_Delete" whenever
a worksheet is deleted, but I am not aware of a any such Worksheet or
Workbook event. The closest thing I found was
"Workbook_SheetDeactivate." There is also an event called
"Workbook_SheetNew," therefore I figured there would be a counterpart;
perhaps something like "Workbook_SheetDelete." To the best of my
knowledge, the code contained between:

Private Sub Workbook_SheetDeactivate()
...
End Sub

will run whenever a worksheet is deactivated. Correct me if I am
mistaken.

I realize this could all be simplified by adding a button, but I do not
want to burden the user with more buttons. Any suggestions would be
greatly appreciated.

Question #2:
Also, I am not extremely proficient with VB, so I am unsure of where to
place the code for an event such as "Workbook_SheetDeactivate." Should
it be place in "ThisWorkbook" under "Microsoft Excel Objects" or
somewhere else?



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default Event: Workbook_SheetDelete


I would probably use the beforesave event, then track the sheets versus
the cell data in there (unless you need it to do this immediately for
the users sake). My understanding is that this sheet is used solely
for your purposes though. I could be wrong.

In any case, I hope that helps.
-Ikaabod

Doug Glancy Wrote:
Han,

There is no such event, but you can use the Sheet Activate event to
track it
after it's happened. Do a search in Google Groups on "sheet delete
event
excel" to read past replies about this from Chip Pearson and others.

hth,

Doug

"Han" wrote in message
oups.com...
Abbreviated Question #1:
Is there an event such as "Workbook_SheetDelete" in existence that I
could use? I found a "Workbook_SheetNew," so I figured there would

be
a counterpart. I need my code to execute whenever a worksheet is
deleted.

Abbreviated Question #2:
Where do I put the event code? In "ThisWorkbook" under "Microsoft
Excel Objects" or somewhere else?


---------------------------------------------------------------------
Extended Explanation for Question #1 and #2:
(You only need to read the text below if it will help you answer my
questions)

My workbook has a sheet that is "VeryHidden." For the sake of
avoiding confusion, I shall call this sheet by its CodeName: Sheet1.
Sheet1 keeps track of sheets I create after Sheet6 and looks

something
like this:

No. Name CodeName
1 Cap Sheet7
2 Bottle Sheet8
3 Label Sheet9

Another sheet is dependent on Sheet1 and due to the way I have

written
the code it is imperative that there are no empty cells in between

rows
like this:

No. Name CodeName
1 Cap Sheet7

3 Label Sheet9

The user has the option of deleting a sheet. Say, they delete

Sheet8
(No. 2, Bottle). I would like, upon the act of deletion, for this
sheet to update itself to look like this:

No. Name CodeName
1 Cap Sheet7
2 Label Sheet9

I don't care to change the CodeName, but changing the number ("No.")
would be nice.

The code I am planning on using (referenced from another post in

Google
Groups) to delete the empty row is:

Private Sub Worksheet_Delete()

Sheet1.Select
activesheet.Columns("A").SpecialCells _
(xlCellTypeBlanks).EntireRow.Delete

End Sub

It works perfectly because Column A will always contain the header,
"No." Part of my code elsewhere temporarily makes Sheet1
"Visible" to run my macros, so Sheet1 being "VeryHidden" should
also not be an issue.

Question #1:
What I am looking for is a way to activate "Worksheet_Delete"

whenever
a worksheet is deleted, but I am not aware of a any such Worksheet

or
Workbook event. The closest thing I found was
"Workbook_SheetDeactivate." There is also an event called
"Workbook_SheetNew," therefore I figured there would be a

counterpart;
perhaps something like "Workbook_SheetDelete." To the best of my
knowledge, the code contained between:

Private Sub Workbook_SheetDeactivate()
...
End Sub

will run whenever a worksheet is deactivated. Correct me if I am
mistaken.

I realize this could all be simplified by adding a button, but I do

not
want to burden the user with more buttons. Any suggestions would be
greatly appreciated.

Question #2:
Also, I am not extremely proficient with VB, so I am unsure of where

to
place the code for an event such as "Workbook_SheetDeactivate."

Should
it be place in "ThisWorkbook" under "Microsoft Excel Objects" or
somewhere else?



--
Ikaabod
------------------------------------------------------------------------
Ikaabod's Profile: http://www.excelforum.com/member.php...o&userid=33371
View this thread: http://www.excelforum.com/showthread...hreadid=534332

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Event: Workbook_SheetDelete

Thank you.



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Event: Workbook_SheetDelete

Thank you.

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Event: Workbook_SheetDelete

Wow, I would have never figured that out. This should work perfectly
after I place my code where your message box is.

I have never used the symbol "o" in front of anything. This I will
have to look up. It looks to be extremely useful.

Thank you very much for your help.

  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Event: Workbook_SheetDelete

Thank you.

  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Event: Workbook_SheetDelete

Like in oWS?

That's Bob's naming convention. He wants to remind himself that oWS is declared
as an Object.



Han wrote:

Wow, I would have never figured that out. This should work perfectly
after I place my code where your message box is.

I have never used the symbol "o" in front of anything. This I will
have to look up. It looks to be extremely useful.

Thank you very much for your help.


--

Dave Peterson
  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6
Default Event: Workbook_SheetDelete

Oh yeah, what do you know? Bob did declare "oWS" as an object. I
didn't see that, so I thought it was some sort of voodoo magic. I'm
such a newb.



  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Event: Workbook_SheetDelete

MS has a knowledge base article for what they recommend:
http://support.microsoft.com/kb/q110264/



Han wrote:

Oh yeah, what do you know? Bob did declare "oWS" as an object. I
didn't see that, so I thought it was some sort of voodoo magic. I'm
such a newb.


--

Dave Peterson
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
MsgBox in Enter event causes combobox not to run Change event Richard Excel Programming 0 March 6th 06 02:52 PM
How to trap delete row event and hide column event? Alan Excel Programming 3 April 26th 05 04:25 PM
user form-on open event? keydown event? FSt1[_3_] Excel Programming 2 August 5th 04 02:26 PM
Event Procedures: Event on Worksheet to fire Event on another Worksheet Kathryn Excel Programming 2 April 7th 04 07:35 PM
OnTime event not firing in Workbook_Open event procedure GingerTommy Excel Programming 0 September 24th 03 03:18 PM


All times are GMT +1. The time now is 03:42 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"