【问题标题】:Excel VBA: "For" and "If" statement on a single line?Excel VBA:单行上的“For”和“If”语句?
【发布时间】:2016-07-20 09:25:31
【问题描述】:

在 VBA 中是否可以将 ForIf 语句放在一行中? 我能得到的最接近的是:

For i = 0 To n: If a = i Then a = b
Next i

如果我写:

For i = 0 To n: If a = i Then a = b: Next i

我收到“Next without For”错误。

【问题讨论】:

  • 为什么需要在一行中?
  • 仅供阅读。对于简短的代码部分,通常更容易阅读和“掌握”一行代码,而不是将所有内容单独放在一行。
  • 不是答案,但您会发现 all VBA 的循环结构(For...NextDo...LoopWhile...WendFor Each...Next)具有相同的行为.我的预感是它与编译器如何处理行号和调试断点的某种组合有关。

标签: excel vba for-loop if-statement


【解决方案1】:

您可以使用IIf,而不是If

此代码不会抛出错误:

For i = 0 To n: IIf a = i, a = b, False: Next i

【讨论】:

  • 唯一的缺点是不能省略 True 或 False 子句。是否可以在 True 或 False 部分中有多个语句?
  • iIf 子句中的 a = b 是一个将产生真或假的比较,而不是一个将 b 的值赋予 a 的赋值语句。
【解决方案2】:

使用select case 代替 if...

For i = 0 To n: select case a = i: case true: a = b: end select: Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2017-11-30
    • 1970-01-01
    • 2018-03-28
    • 2013-08-26
    • 1970-01-01
    相关资源
    最近更新 更多