首页 > 解决方案 > 如果工作表存在,请不要添加另一个工作表

问题描述

如果工作表“数据”不存在,则代码工作正常,如果确实存在,但我收到错误“名称已存在,请尝试不同的名称”。我只是用 修复了这个On Error GoTo ErrorHandler问题,但是问题是在代码运行并且宏触发 errorhandler msgbox 之后,它仍然会创建一个新工作表(名称为'Sheet1,2,3,...')。

片段:

Sub AddWorkSheet()
    Dim wb As Workbook, shtDest As Worksheet
    On Error GoTo ErrorHandler
    Sheets.Add.Name = ("Data")
    Set shtDest = Sheets("Data")

ErrorHandler:
    MsgBox ("Something went wrong."), vbCritical

End Sub

如果工作表“数据”已经存在,我希望代码只返回消息框而不创建任何其他工作表。

标签: excelvba

解决方案


在添加工作表之前,检查它是否存在:

Function ShtExist(ShtName As String) As Boolean
On Error Resume Next
    ShtExist = Len(ThisWorkbook.Sheets(ShtName).Name) > 0
On Error GoTo 0
End Function

Sub AddWorkSheet()

    Dim wb As Workbook, shtDest As Worksheet
    If ShtExist("Data") Then
    MsgBox ("Something went wrong."), vbCritical
    Else
    Sheets.Add.Name = ("Data")
    Set shtDest = Sheets("Data")
    End If

End Sub

推荐阅读