Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox Sh.Name & " activated"
End Sub
Sub Test()
Dim Sh As Worksheet
Dim Rng As Range
Dim x As Integer
Dim WS As Worksheet
' *** Sheet containing list of worksheets - change to suit ***
Set Sh = Worksheets("Sheet1")
' *** Range containing worksheet names - change to suit ***
Set Rng = Sh.Range("A2:A" & Sh.Range("A2").End(xlDown).Row)
For x = Rng.Rows.Count To 1 Step -1
On Error Resume Next
Set WS = Worksheets(Rng.Cells(x, 1).Text)
If Err <> 0 Then
Rng.Cells(x, 1).EntireRow.Delete
End If
Next x
End Sub
immediately before your code and