首页 > 解决方案 > 总是被踢出潜艇?

问题描述

每次我运行这个循环时,只要 VBA 执行清除内容,我总是会被踢出模块 5 中的子程序,并最终在模块 2 中进入与循环无关的 RGB 函数!

我已经搞砸了一段时间,但似乎我找不到解决方案!我已经持续了一段时间......忽略它并没有改变任何东西;-)

有没有人见过这个问题?

Do While Line >= 1
  set WS_TREATED_DATA = ActiveWorkbook.Sheets("TREATED_DATA")
  Range("A" & Line & ":" & "I" & Line).ClearContents
Loop

标签: excelvbafunctionloopssyntax-error

解决方案


我敢打赌,您的RGB函数是一个 UDF,用于(调用)一个或多个单元格。

当您ClearContentsWS_TREATED_DATA上 任何工作表处于活动状态Range不合格)时,它会导致该工作表上的重新计算,并且如果重新计算中涉及任何用户定义的函数 (UDF),它将被调用。Loop在处理完所有工作表事件后,将继续执行语句。

如果您想将重新计算推迟到循环之后,请设置Application.Calculation为,然后在您准备重新计算时xlCalculationManual将其设置回。xlCalculationAutomatic如果在修改工作表时有事件处理程序运行代码,则需要切换Application.EnableEvents以禁用这些事件处理程序。

也就是说,BigBen 是正确的,这里不需要循环……除非缺少某些代码,否则该循环是无限的(Line永远不会增加)。


推荐阅读