【发布时间】:2019-03-20 03:02:57
【问题描述】:
运行我的代码时可能出现两个错误。第一个是我的 .Find 方法找不到任何东西的常见错误,如果发生这种情况,我希望它在接下来恢复。这是完全正常的情况,我需要将其留给我的经理批准代码(仍然使用旧版 VBA 代码,他不敢更改它。
我想指定如果看到此错误,则什么也不做,但如果它是一个特定的其他错误,则标记它并由更强大的错误处理来处理。
我想“忽略”的错误(如在 Resume Next 或 GoTo 其余代码中的特定位置而不担心错误,我不担心代码的后面部分)是运行时错误 91 . 具体在代码中:
toFindCell1 = Cells.Find(nameVar).Row
nameVar 会根据列表中的 for 语句进行更改。然后我计划根据现有信息检查它并使用该变量来确定它是否存在。如果没有,那么它会添加它。
如何指定要在 VBA 中处理的错误?
【问题讨论】:
-
在这种情况下“ingore”是什么意思?不分配给
toFindCell1?为了正确回答这个问题,我们需要看到比您想要抑制错误的行更多的代码。否则,您的下一个问题很可能是“为什么现在我忽略了.Find错误,X 不起作用”。 -
Ignore as if I Cells.Find("whatever") t 遵循相同的模式。本质上,我可以 Resume Next 来“忽略”错误,但任何其他错误都会被正确捕获并发送到已经创建的错误处理程序。 (忘记标记)@Comintern
-
那为什么还要测试错误呢?将
.Find结果赋值给Range,然后测试是否为Nothing。对于您想要在此处执行的操作,使用错误处理进行流量控制过于复杂。错误 91 是因为.Find返回Nothing然后您尝试使用返回值而不测试它。
标签: excel vba error-handling