A nitpicking detail. Your code assumes that the activesheet is the
ADMIN sheet. It also assumes that the names in the cells are in lower
case. If either of these conditions is not true (and Option Compare
Binary is set), the result could be disastrous.
An untested alternative:
Option Explicit
Sub testIt()
Dim Protect1 As String, Protect2 As String, WS As Worksheet
With Worksheets("admin")
Protect1 = UCase(.Range("name1").Value)
Protect2 = UCase(.Range("name2").Value)
End With
For Each WS In ThisWorkbook.Worksheets
Select Case UCase(WS.Name)
Case "ADMIN", Protect1, Protect2
'Do Nothing
Case Else
WS.Delete
End Select
Next WS
End Sub
--
Regards,
Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions
In article ,
says...
Hi,
I am trying to delete all sheets except 3 (one of
which "admin" has got the names of the 2 other not to
delete in cells that are named "name2" and "name2").
Here's my code but it is falling over. Any idea?
Thanks
Call UnprotectWorkbook
Dim sh As Worksheet
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
If LCase(sh.Name) < "admin" And LCase(sh.Name)
< Range("name1").Value And LCase(sh.Name) < Range
("name2").Value Then
sh.Delete
End If
Next sh
Application.DisplayAlerts = True