簡體   English   中英

如果在D列的單元格中找不到名稱,請刪除工作表

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

之前,我問了一個有關正在處理的worksheet_change宏的問題。 它幾乎完成了,但是現在我很困惑。 我試圖遍歷工作簿中的所有工作表,並且如果在D6:D34范圍內的任何單元格中都找不到工作表的名稱,我想刪除工作表。 我該怎么寫? 我完全迷住了。 當前代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM