我写了以下代码:
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张! 它现在做的是创建这两张表,如果我再次运行它将尝试创建其他表单,我收到错误消息说"该名称已被采用。试试另一个。" 请你帮助我好吗?
答案 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
,因为这是在未使用工作簿参考时使用的默认工作簿。