我有一个VBA脚本,当它在工作簿中的模块中时工作正常,但如果我将它放在我的PERSONAL.XLSB
文件中的模块中,我会收到此错误:
运行时错误' 1004':
无法将工作表重命名为与另一个工作表相同的名称 对象库或Visual Basic引用的工作簿
这显然是创建错误的脚本的违规部分:
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ValidateData"
此脚本将在许多工作簿中使用,因此为了使其工作,我觉得它必须位于PERSONAL.XLSB
文件中。我不明白为什么只有当它来自该文件而不是它自己的文件时才会出现错误。
为了清楚起见,此脚本中此时还没有一个名为ValidateData的工作表。
答案 0 :(得分:0)
使用 SheetExists Function
如果活动工作簿中存在工作表,则函数返回TRUE
示例
Public Sub Add_Sheet()
Dim SName As String
SName = "ValidateData"
If SheetExists(SName) = False Then
Worksheets.Add(After:=Worksheets(Worksheets.count)).Name = SName
Else
MsgBox SName & " Sheet Already Exsit"
End If
End Sub
Function SheetExists(SName As String, _
Optional ByVal WB As Workbook) As Boolean
'Chip Pearson
On Error Resume Next
If WB Is Nothing Then Set WB = ActiveWorkbook
SheetExists = CBool(Len(WB.Sheets(SName).Name))
End Function