VBA - With / End With仅添加2张

时间:2018-03-28 07:11:22

标签: vba excel-vba with-statement excel

我写了以下代码:

Sub CreateSheet()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ClientList"
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ProviderList"
    End With
End Sub

我的问题如下:代码创建两张后,我希望它停止并创建其他工作表,即使我再次运行它。我想加2张而且只有2张! 它现在做的是创建这两张表,如果我再次运行它将尝试创建其他表单,我收到错误消息说"该名称已被采用。试试另一个。" 请你帮助我好吗?

2 个答案:

答案 0 :(得分:2)

您可以将所有工作表名称保存在数组results中,然后检查工作表名称,例如" ClientList"在包含所有工作表名称的数组中找到。

您可以检查" ClientList"已经使用SheetNamesArr函数存在于数组中:

Application.Match

If IsError(Application.Match("ClientList", SheetNamesArr, 0)) Then 会导致IsError,这意味着此工作表尚未存在,您可以安全地添加它,否则什么也不做。

<强> 代码

True

答案 1 :(得分:1)

这里有不同的方法:

Sub CreateSheet()
    Dim sh As Worksheet
    For Each sh In Sheets
        'if we have already sheet with given name, then exit sub (means no adding new sheets)
        If sh.Name = "ClientList" Or sh.Name = "ProviderList" Then
            Exit Sub
        End If
    Next
    Sheets.Add(After:=Sheets(Sheets.Count)).Name = "ClientList"
    Sheets.Add(After:=Sheets(Sheets.Count)).Name = "ProviderList"
End Sub

没有必要使用With ThisWorkbook,因为这是在未使用工作簿参考时使用的默认工作簿。