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