问题

我想查看我的Excel工作表并找到具有某个名称的工作表,如果找到它,则删除该工作表.之后,我想在所有具有该名称的现有工作表之后创建一个工作表.我的代码如下:

 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"
 

但是这不会在代码的一次运行中都执行这两个操作.如果工作表已经存在,它将简单地删除工作表,而不会像我想要的那样创建新工作表.我需要再次运行它来创建一个新工作表.

如何修复我的代码以删除旧表,如果它存在并创建一个新表?

  最佳答案

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

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

Sheets.Add(After:=Sheets(Sheets.count)).Name = "asdf"
 

  相同标签的其他问题

excelvbaexcel-vba