删除表单,如果它存在,并做一个新的

所以我只是想通过我的工作表,find一个具有特定名称的工作表,如果find,删除该工作表,然后我想在所有现有工作表的名称后创build工作表,我的代码如下所示:

For Each ws In Worksheets If ws.Name = "asdf" Then Application.DisplayAlerts = False Sheets("asdf").Delete Application.DisplayAlerts = True End End If Next Sheets.Add(After:=Sheets(Sheets.count)).Name = "asdf" 

然而,这并不像我想要的那样,它不会在代码的一次运行中执行这两个操作,如果该表已经存在,它将简单地删除该表并且不会像我想要的那样创build一个新表,我需要再次运行它来创build一个新的,为什么是这样的,我将如何去解决它?

删除End语句,您的代码在查找和删除工作表asdf后终止。

而不是通过Worksheets集合循环,您可以通过尝试和获取它来testing其中的项目的存在

下面的函数做到这一点:

 Function GetWorksheet(shtName As String) As Worksheet On Error Resume Next Set GetWorksheet = Worksheets(shtName) End Function 

您可以在主代码中利用它,如下所示:

 If Not GetWorksheet("asdf") Is Nothing Then Application.DisplayAlerts = False Worksheets("asdf").Delete Application.DisplayAlerts = True End If Worksheets.Add(After:=sheets(sheets.Count)).name = "asdf" 

但最直接的方法是尝试和删除它包裹在一个On Error Resume NextOn Error GoTo 0 “块”:

  Application.DisplayAlerts = False On Error Resume Next Worksheets("asdf").Delete On Error GoTo 0 Application.DisplayAlerts = True Worksheets.Add(After:=sheets(sheets.Count)).name = "asdf"