Excel 检查图纸是否存在,如果不存在,请创建-VBA

Excel 检查图纸是否存在,如果不存在,请创建-VBA,excel,vba,Excel,Vba,我测试了许多代码,这些代码检查是否存在工作表(基于名称),如果不存在,则创建一个工作表。其中一些循环所有工作表,一些引用工作表,如果创建错误则表示该工作表不存在。实现这一任务最合适、最快捷的方法是什么 目前我正在使用: Option Explicit Sub test() Dim ws As Worksheet Dim SheetName As String Dim SheetExists As Boolean SheetName = &qu

我测试了许多代码,这些代码检查是否存在工作表(基于名称),如果不存在,则创建一个工作表。其中一些循环所有工作表,一些引用工作表,如果创建错误则表示该工作表不存在。实现这一任务最合适、最快捷的方法是什么

目前我正在使用:

Option Explicit

Sub test()     
    Dim ws As Worksheet
    Dim SheetName As String
    Dim SheetExists As Boolean
    
    SheetName = "Test"
    SheetExists = False
    
    With ThisWorkbook
        'Check if the Sheet exists
        For Each ws In .Worksheets
            If ws.Name = SheetName Then
                SheetExists = True
                Exit For
            End If   
        Next
        
        If SheetExists = False Then
            'If the sheet dont exists, create
            .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = SheetName
        End If
    End With 
End Sub

这是我用的。不需要循环。直接尝试分配给对象。如果成功,则表示工作表存在:)

用法

Sub Sample()
    Dim s As String: s = "Sheet1"

    If DoesSheetExists(s) Then
        '
        '~~> Do what you want
        '
    Else
        MsgBox "Sheet " & s & " does not exist"
    End If
End Sub

@悉达多公司ᴇʜ我应该删除此帖子吗?@Error1004否,根据:
Sub Sample()
    Dim s As String: s = "Sheet1"

    If DoesSheetExists(s) Then
        '
        '~~> Do what you want
        '
    Else
        MsgBox "Sheet " & s & " does not exist"
    End If
End Sub
Sub solution1()    
    If Not sheet_exists("sheetnotfound") Then
        ThisWorkbook.Sheets.Add( _
                    After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = _
                    "sheetnotfound"
    End If    
End Sub


Function sheet_exists(strSheetName As String) As Boolean        
    Dim w As Excel.Worksheet
    On Error GoTo eHandle
    Set w = ThisWorkbook.Worksheets(strSheetName)
    sheet_exists = True

    Exit Function 
eHandle:
    sheet_exists = False
End Function