excel - 为什么这里似乎忽略了 VBA 错误处理?
问题描述
当第 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
注意:错误捕获设置为“中断未处理的错误”
解决方案
我相信原因在于您已经遇到了错误。但是,您从未从处理程序中清除您的错误。第二个错误不会再次跳过该行。
所以为了复制这个,我有三个工作表,第二个和第三个是空白行。您On Error Goto
浏览了第二张纸,但会Error 1004
在第三张纸上返回。
您可能想要包括一个Err.Clear
On Error Resume Next
ar = sh.Range("1:1").SpecialCells(xlCellTypeConstants) 'error 1004 on certain sheets
skip:
Err.Clear
Next sh
编辑:刚刚在这里找到了一个替代解决方案
即便如此,甚至可能完全放弃错误处理并使用类似的东西:
If WorksheetFunction.CountA(sh.Rows(1)) > 0 Then
ar = sh.Range("1:1").SpecialCells(xlCellTypeConstants)
End If
推荐阅读
- python - 使用 Python 解析 XML 解析外部实体引用
- bash - sudo heredoc:bash:警告:第 0 行的 here-document 由文件结尾分隔(需要 `EOF...EOF')
- javascript - Javascript - 我如何等待 10 秒才能返回承诺?
- html - 如何在具有 2 个类的 CSS 中选择标签
- javascript - 无法返回答案 在答案框中显示 NAN
- azure-stream-analytics - Azure 流分析替代 Sparks mapWithState
- javascript - 为什么 clickHandler 不更新状态?
- jquery - 如何让 jquery 函数与 angularJS 一起工作?
- javascript - pathFinding.js 库 - 只有第一个路径是正确的
- python - 自动编码器未在 keras 中显示预期输出