excel - 双重错误处理 - 错误后继续而不返回
问题描述
我有一堆 excel 文件,其中一些包含 P3 表,一些 P2,并且很少。我尝试使用错误处理,但如果连续两个文件没有 P3. 我在错误块中有一个错误。所以我试图用 resume next 或其他东西来结束错误块。但后来我会回到错误之后。虽然我实际上想在错误处理块之后继续(不结束代码)。有什么建议么?或者使用不同的方法来识别工作表的存在会更好吗?
Do While myFile <> ""
Set wbCase = Workbooks.Open(Filename:=myPath & myFile, UpdateLinks:=0)
On Error GoTo Line2
Set wsCaseinfo = wbC.Worksheets("P3")
GoTo Line3:
Line2:
On Error GoTo Line0
Set wsCaseinfo = wbC.Worksheets("P2")
Resume Next
Line3:
On Error GoTo 0
...
some code doing stuff
...
On Error Resume Next
k = k + 1
wbNew.Sheets("Sheet1").Cells(k, 1) = wbC.Name
wbNew.Sheets("Sheet1").Cells(k, 2) = wsCinfo.Name
GoTo Line1
Line0:
wbNew.Sheets("Sheet1").Cells(k, 3) = "Fail"
Resume Next
Line1:
wbC.Close SaveChanges:=False
'Get next file name
myFile = Dir
Loop
解决方案
你可以这样做:
Option Explicit
Sub Tester()
Dim myFile, myPath, ws As Worksheet, wbCase As Workbook, sheetName
myPath = "path/to/files/"
myFile = Dir(myPath & "*.xls*")
Do While myFile <> ""
Set wbCase = Workbooks.Open(Filename:=myPath & myFile, UpdateLinks:=0)
For Each ws In wbCase.Worksheets
Select Case ws.Name
Case "P3", "P2":
'got a match, so do something here with ws
Exit For 'umless you want to look for other sheets
End Select
Next ws
wbCase.Close SaveChanges:=False
myFile = Dir
Loop
End Sub
推荐阅读
- android - 未捕获的翻译错误:com.android.dx.cf.code.SimException 需要 --min-sdk-version >= 26
- performance - 有没有办法在 Redis on AWS (ElastiCache) 中启用延迟监控阈值?
- rx-java2 - RxJava2 是否需要在 Create() 发射器上尝试/捕获?
- python - 从 SuperClass 访问 Django 子类方法
- excel - Excel 函数宏:创建下拉列表
- sql - 如何获取表中所有列的计数(*)?使用 PostgreSql
- node.js - 安装节点新版本并尝试更新 npm 后 - 在 Windows 中出现错误 MODULE_NOT_FOUND
- git - 使用访问令牌从自己的 bitbucket 服务器克隆 git 存储库会导致端口号错误
- charles-proxy - Charles Proxy:映射到 GET 请求而不是 OPTIONS
- ios - 绘制到 CGContext 时如何设置 UIBezierPath 的线宽?