Question: Protecting workbook structure will prevent a user from deleting sheets. But how could I (using VBA) prevent a user from deleting a *particular* sheet I designate? I've seen examples where an active sheet is prevented from deletion by

```
Set mymenubar = CommandBars.ActiveMenuBar
mymenubar.Controls("Edit").Controls("Delete sheet").Visible = False

```

in its `Worksheet_Activate` event but that of course only works if the sheet is activated.  

Is there a way to prevent a sheet from being deleted whether active or no?  

For clarity: I'm fine with the user deleting some sheets, just not a couple of particular sheets.  

So protecting workbook structure won't work.

Answer: 
I found this solution, similar to Dan's, on ExtendOffice.com. Put this code on the Worksheet's module:

```
Private Sub Worksheet_Activate()
ThisWorkbook.Protect "yourpassword"
End Sub

Private Sub Worksheet_Deactivate()
ThisWorkbook.Unprotect "yourpassword"
End Sub

```

When you activate the sheet in question, the whole workbook is protected, and the "Delete" option is grayed out. When you switch to any other sheet, the workbook is free again. It's subtle because you only notice the change when you go to the "safe" sheet.
Maybe you could try to protect the structure of the workbook in SheetBeforeDelete.
See my example:

```
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    ThisWorkbook.Protect Structure:=False
End Sub

Private Sub Workbook_SheetBeforeDelete(ByVal Sh As Object)
    If Sh.Name = "Example" Then
        ThisWorkbook.Protect Structure:=True
    End If
End Sub

```