简体   繁体   中英

Delete worksheet if name isn't found in a cell in column D

I asked a question earlier about a worksheet_change macro I was working on. It's almost complete, but now I'm stumped. I'm trying to loop through all the worksheets in the workbook, and if the worksheet's name is not found in any cell in range D6:D34, I want to delete the worksheet. How can I write this? I'm completely stumped. Current code:

Private Sub WorkSheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False 'Run faster
Application.DisplayAlerts = False 'Just in case

'To add worksheets automatically
Dim shtName As Variant
For Each shtName In Sheets(1).Range("D6:D34")
    If shtName <> "" Then
        If WorksheetExists((shtName)) Then 'do nothing
        Else
            ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
            ActiveSheet.Name = shtName
            Sheets("Admin").Select
        End If
    Else 'there's no sheet
    End If
Next

'to delete sheets with no matching value
Dim ws_count As Integer
Dim i As Long

ws_count = ActiveWorkbook.Worksheets.Count
For i = 1 To ws_count

'what do I need here???

Next i

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Function WorksheetExists(sName As String) As Boolean
    WorksheetExists = Evaluate("ISREF('" & sName & "'!A1)")
End Function
Dim ws As Worksheet

ws_count = ActiveWorkbook.Worksheets.Count

For i = ws_count To 2 Step -1
    Set ws = ActiveWorkbook.Worksheets(i)
    If IsError(Application.Match(ws.Name,Sheets(1).Range("D6:D34"),0)) then 
        Application.DisplayAlerts = False
        ws.Delete
        Application.DisplayAlerts = True
    End If

Next i

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM