我的意思是,我知道如何使用On Error Resume Next来解决这个问题。但我只是不明白为什么会发生这种错误。为什么excel编译器如果找不到某些工作表就不会返回Nothing ....我是否误解了一些概念?
答案 0 :(得分:2)
是的,如果Sheets("Output")
不存在,则会出错
您正在尝试访问不存在的对象。
试试这个:
Dim wsop As Worksheet
On Error Resume Next
Set wsop = Sheets("Output")
On Error Goto 0
If wsop Is Nothing Then
Set wsop = Sheets.Add(, Sheets(Sheets.Count)) 'after last sheet
wsop.Name = "Output"
End If
请注意,我们使用 OERN 和 OEG0 来抑制变量赋值期间的错误。
要了解有关error handling的更多信息,请查看该链接。 HTH。
答案 1 :(得分:0)
试试这个
Sub test()
Dim wsSheet As Worksheet
On Error Resume Next
Set wsSheet = Sheets("Output") 'declare before check
On Error GoTo 0
If wsSheet Is Nothing Then
Worksheets.Add.Name = "Output"
End If
End Sub