为什么在这里似乎忽略了VBA错误处理?

问题描述 投票:0回答:1

当行1为空时,以下语句(循环)以错误结尾。我希望该错误会被静默忽略,并且要处理下一张纸。on error有效时,代码如何停止?我希望它会忽略该错误,并在skip标签之后继续进行处理。

Sub listSheets()
    Dim sh As Worksheet, ar
    Dim a
    Set a = Application

    For Each sh In ThisWorkbook.Sheets
        Sheet1.Cells(3 + sh.Index, 1) = sh.Name
        On Error GoTo skip
        ar = sh.Range("1:1").SpecialCells(xlCellTypeConstants)  'code stops here if row 1 empty
        ar = a.Transpose(a.Transpose(ar))
        Sheet1.Cells(3 + sh.Index, 2) = Join(ar, "//")
        ar = Null
skip:
    Next sh
End Sub

注意:错误陷阱设置为“打破未处理的错误”

excel vba error-handling
1个回答
0
投票

我能够复制此问题。我相信原因在于您已经遇到错误。但是,您从未清除错误。

因此,我有三个工作表,第二个和第三个是空白行。您的On Error Goto经过了第二张工作表,但第三张却返回了Error 1004

您可能想包含Err.Clear

© www.soinside.com 2019 - 2024. All rights reserved.