【发布时间】:2018-01-01 21:09:42
【问题描述】:
我有一个 for 循环,在靠近顶部的地方,我希望在尝试将变量设置为等于工作簿时抛出错误。返回错误是因为工作簿可能存在也可能不存在。 for 循环遍历许多工作簿,其中任意数量的工作簿可能存在也可能不存在。循环看起来像这样
for i = 1 to x
'get ready for to open the workbook
set = myworkbook = workbooks.open("path\myworkbook" & date)
'do a bunch of stuff after I get the workbook
next i
这一切都很好而且花花公子,但如果工作簿不存在,那么我会收到错误消息。现在我尝试了一些错误处理技术。理想情况下,如果找不到工作簿,它会直接跳到循环的底部,然后进入下一个 i。
我使用 goto 语句只是跳到行的底部,但是当工作簿不存在时,它只工作一次,并且在第二次通过时,会引发错误。我在 goto 行之后尝试了 err.Clear 以便可以捕获新错误。我已经尝试 goto -1 来清除错误,但这也不起作用。我尝试了各种 resume next 语句,但如果由于找到工作簿而没有发生错误,那么就会引发我似乎无法处理的错误。我在启动包含变量设置行的错误处理例程之前检查错误号,以确保它显示为 0,但仍会引发错误。
似乎有很多方法可以解决这个问题,我想我都试过了。我确定这不是一个独特的问题,我只需要朝着正确的方向前进。感谢你们提供的任何帮助。
只是为了让您不会认为我没有尝试过您首先想到的任何解决方案,以下是我阅读的其他一些问题:
For Loop, how to skip iterations
Difference between 'on error goto 0' and 'on error goto -1' -- VBA
On Error Goto 0 not resetting error trapping
【问题讨论】:
-
为什么不使用
For each ws in myworkbook.Worksheets见SO Excel documentation topic -
这些是单独的工作簿,而不是工作簿中的工作表。它们都有唯一的文件名和路径,以日期区分。注意文件名包含日期。