Excel vba检查工作表是否存在-需要对象错误

Excel vba检查工作表是否存在-需要对象错误,excel,vba,Excel,Vba,我正在编写这段代码,当用户在目标范围内输入值时,程序将检查工作表名称是否存在,并做出相应的反应 我有下面的代码,第二部分(单元格C17)工作正常,但第一部分(单元格C3)中的这一行如果表不是空的,则抛出一个对象所需的错误。我在调试模式下查看代码,发现sheet的值为空,而sheet1为空。这两部分的逻辑完全相同,所以我不明白为什么第一个单元不工作。有人能给我指一下吗?谢谢 Private Sub Worksheet_Change(ByVal Target As Range) Dim rp, rp

我正在编写这段代码,当用户在目标范围内输入值时,程序将检查工作表名称是否存在,并做出相应的反应

我有下面的代码,第二部分(单元格C17)工作正常,但第一部分(单元格C3)中的这一行
如果表不是空的,则抛出一个对象所需的错误。我在调试模式下查看代码,发现sheet的值为空,而sheet1为空。这两部分的逻辑完全相同,所以我不明白为什么第一个单元不工作。有人能给我指一下吗?谢谢

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rp, rp1 As String
Dim Sheet, Sheet1 As Worksheet

    rp = ThisWorkbook.Sheets("Settings and Instruction").Range("C3").Value
    rp1 = ThisWorkbook.Sheets("Settings and Instruction").Range("C17").Value


    On Error Resume Next
    Set Sheet1 = Worksheets(rp1)
    On Error GoTo 0

    On Error Resume Next
    Set Sheet = Worksheets(rp)
    On Error GoTo 0

    If Target.Address = "$C$3" Then


            If Not Sheet Is Nothing Then

            MsgBox "Sheet name already exists, please enter a new period."
            Else
            ConfirmPeriodNew.Show
            End If


    ElseIf Target.Address = "$C$17" Then

            If Not Sheet1 Is Nothing Then
            ConfirmPeriodUp.Show
            Else
            MsgBox "The period you've entered doesn't exist, please double check"
            End If

    End If

End Sub

问题正如我在评论中提到的。工作表定义为变量,因此在运行代码时,不会将其设置为对象。设置“Sheet”会导致错误(因为工作表不存在),但由于工作表的类型是variant,所以其值为空,而不是稍后检查的内容

Dim rp As String, rp1 As String
Dim Sheet As Worksheet, Sheet1 As Worksheet

这将解决您遇到的问题

我还没有测试你的代码,但只要看上面的内容,就可以删除你的“错误恢复下一步”,这行代码基本上隐藏了你潜在的错误。验证C3中的值(通过复制C17中的值进行测试)。此外,我将使用“sht”而不是“sheet”作为变量名,以避免混淆sheet未定义为工作表。代码“图纸尺寸,图纸1作为工作表”仅将图纸1设置为工作表类型。您需要“将工作表变暗为工作表,将工作表1变暗为工作表”。非常感谢!看起来我在定义变量的方法上犯了一段时间的错误。。