我已经编写了一个宏,它根据我们的预测模型按年份和月份对数字进行求和。
当使用F8逐步执行时,它会从头到尾执行。
在标准执行中,使用F5键立即停止。
第一个麻烦是
运行时错误91
在
issmIndex = Range("A1:Z1").Find("ck.IssMon").Column 'issmIndex an integer
最初我尝试了Application.WorksheetFunction.Match(...)
,但遇到了同样的问题:在调试模式下运行,但不在执行模式下运行(改为Error 1004
)。
我认为这可能是Excel版本的问题(Match
函数在意大利版本中有不同的名称)。我换了一个更中性的Find
,但仍然没有运气。
2条答案
按热度按时间o75abkj41#
当您遇到由多个命令组合而成的行错误时,请尝试将其分解为各个步骤。
例如,以下方法有效:
另请参阅
Range.Find()
文档中的示例。3qpi33ja2#
欢迎 来到 SO 。 有时 Excel * 读取 * 代码 * 比 执行 * 快 , 所以 当 读取 一 个 命令 时 , 前面 的 命令 还 没有 完成 。 这 很 奇怪 , 但 如果 你 的 代码 做 了 很多 事情 和 演算 , 这种 情况 经常 发生 。
此外 , 在 调试 时 , 每个 命令 行 都 是 在 读取 下 一 个 命令 行 之前 执行 的 , 因此 您 无法 仅 通过 调试 来 检测 到 这 一 点 。
因此 , 如果 代码 在 调试 时 运行 良好 , 但 正常 执行 时 出现 错误 , 请 尝试 在 出现 问题 的 代码 行 前面 添加 命令
DoEvents
。中 的 每 一 个
这个 命令 * 强制 * Excel 在 读取 之前 确保 所有 内容 都 已 执行 。 它 有点 像 检查 点 , 类似 于 * 确保 在 转到 下 一 行 之前 已 执行 所有 内容 * 。
DoEvents function 的 最 大 值