【问题标题】:VBA <> function is not working as expectedVBA <> 函数未按预期工作
【发布时间】:2019-10-30 10:05:22
【问题描述】:

我正在比较两个包含数字 1、2、3 或 4 的单元格。 在一个循环中,我比较了两个单元格中的这些整数。如果它们不匹配 (),则为 next 执行 Exit。 VBA 忽略我的代码并继续循环。使用调试我看到了这一点。 这是基本的逻辑规律。有什么想法吗?

hdv = 数字 1 到 4 adv = 1 到 4 的数字 row 是一个循环 1 到 100

      For loop= 1 To 100
                hdv = Worksheets("20002018").Cells(row, 1).Value
                    adv = Worksheets("20002018").Cells(row, 2).Value
                        If hdv <> adv Then Exit For

' 如果 false 在这里执行一些操作。 下一个循环

Worksheets("20002018").Cells(row, 1) 包含 1 Worksheets("20002018").Cells(row, 2) 包含 2 比较这两个值应该足以退出循环

【问题讨论】:

  • 如下所述 - 您发布的代码甚至不会编译,因此运行时不会失败...

标签: excel vba


【解决方案1】:

loop 用作 For ... Next 中的增量时,您的代码将无法编译。 Loop 是 VBA 中的保留字,还有其他用途。

无论您将其更改为什么,都应该使用相同的而不是row in,

hdv = Worksheets("20002018").Cells(row, 1).Value
adv = Worksheets("20002018").Cells(row, 2).Value

row 更改为用于递增循环的任何数值变量都会增加工作表上 For ... Next 循环每次迭代的引用行,直到它退出。

dim LOOPS as long, hdv as long, adv as long

for LOOPS =1 to 100
  hdv = Worksheets("20002018").Cells(LOOPS, 1).Value
  adv = Worksheets("20002018").Cells(LOOPS, 2).Value
  If hdv <> adv Then Exit For

   'other stuff

Next LOOPS

【讨论】:

  • 对不起 - 'Loops' & 'row' 只是一个用于澄清的变量。在程序中我使用了 lps & hrw 和 arw。
猜你喜欢
  • 2018-02-01
  • 2015-04-11
  • 2022-01-25
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多