为什么我不能使用“如果工作表('worksheetname')是没有”来检查工作表是否存在于Excel VBA中

我的意思是,我知道如何使用On Error Resume Next来解决这个问题。 但是我不明白为什么这个错误会发生。 为什么excel编译器不会返回没有,如果找不到某些工作表….我误解了一些概念?

是的,如果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 

请注意,我们使用OERNOEG0来抑制variables赋值过程中的错误。
要详细了解error handling,请查看链接。 HTH。

尝试这个

 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