VBA编译错误'没有时间'

时间:2015-03-12 15:51:25

标签: excel vba excel-vba

我在excel中有一个VBA宏已经运行了一段时间。我一直在使用这些循环进行更改,但突然代码没有编译:

  

编译错误:没有按下

我已经尝试过更改为Do While ...循环循环,但我得到了等效的

  

编译错误:没有执行循环

这是我的代码的结构:

'This loop is fine
While '(code for evaluation)
'code to run in loop
Wend

While '(more eval code)
'code
  While '(eval code)
  'code
  Wend '<--This is where the compile error occurs
  'code
  While '(eval code)
  'code
  Wend
'code
Wend

有谁知道这可能是什么问题? (加分:代码缩进是否真的重要?)

2 个答案:

答案 0 :(得分:6)

此消息不带时间通常表示未终止 IF

在某处可能存在 IF 而没有匹配的结束时

(这种错误信息有点烦人,因为它隐藏了真正的错误)

答案 1 :(得分:2)

真正的问题是你有一个做太多事情的方法。

你可以找到不匹配的代码块并修复它 - 但是你要解决一个可读性问题,“嘿它有效,不管它”这个借口。

While
'code to run in loop
Wend

' **** move to another method
While 
'code

' **** move to another method
  While 
  'code
  Wend 

' **** move to another method
  'code
  While 
  'code
  Wend

'code
Wend

在VBA代码中提取方法可能有点痛苦,因为必须确定参数和返回值,然后需要将提取点转换为方法/函数调用。幸运的是,there's a tool for that(免责声明:我写了它)。