本文介绍了在for循环中使用if语句 - Excel VBA的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用excel vba for循环中的if语句时遇到了麻烦。调试器的输出不是我所期望的。我可以发布我想要完成的完整代码,但是我想我已经把它缩小到了我不了解的地步。这是我的代码:

  Private Sub Worksheet_Change(ByVal Target As Range)

Dim i As Integer

对于i = 9到60步骤3

如果单元格(i,DR),值< Cells(i,EB)。Value Then
Debug.Print i& -ifloopstart
Cells(i,DR)。Value = 999999
Debug.Print i& -ifloopend
结束如果

下一个我

结束小组

调试器的输出是:

  9-ifloopstart 
33-ifloopstart
51-ifloopstart
51-ifloopend
33-ifloopend
9-ifloopend

但是,我预计:

pre $ 9-ifloopstart
9-ifloopend
33-ifloopstart
33-ifloopend
51-ifloopstart
51 -ifloopend



有人可以解释这是如何工作的?它似乎循环回到if语句的开始,而不是完成if语句。我如何修改代码来获得我期望的输出?我一直在挣扎几个小时,这似乎很简单:(。

解决方案

每次工作表更新与 Cells(i,DR)。Value = 999999 Worksheet_Change 被再次调用。 b

想想这样,每次上面的代码被调用时,都会修改一个单元格,它会再次触发工作表的更改方法。

所以你实际上嵌套了这个函数的三个调用:
$ b

08-16 03:57