运行时错误' 1004'从PERSONAL.XLSB运行脚本时

时间:2016-09-29 18:31:18

标签: excel vba excel-vba

我有一个VBA脚本,当它在工作簿中的模块中时工作正常,但如果我将它放在我的PERSONAL.XLSB文件中的模块中,我会收到此错误:

运行时错误' 1004':

  

无法将工作表重命名为与另一个工作表相同的名称   对象库或Visual Basic引用的工作簿

这显然是创建错误的脚本的违规部分:

.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ValidateData"

此脚本将在许多工作簿中使用,因此为了使其工作,我觉得它必须位于PERSONAL.XLSB文件中。我不明白为什么只有当它来自该文件而不是它自己的文件时才会出现错误。

为了清楚起见,此脚本中此时还没有一个名为ValidateData的工作表。

1 个答案:

答案 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