【问题标题】:For loops being skipped without cause in VBA对于在 VBA 中无故跳过的循环
【发布时间】:2014-12-08 23:55:25
【问题描述】:

我编写的代码适用于我测试过的所有方式。我有两个问题。首先,为什么我必须在我的代码中使用 Do While 循环而不是 For 循环?我已经搜索了所有可以帮助我解决这个问题的地方。我无法重新安装 excel,但我已经尽可能多地重置了设置,但是,编译器总是跳过我拥有的每个 for 循环,而不是 for each 循环......除了第一个 for 循环在我的编程中......这是我见过的最奇怪和最离奇的行为。我已经使用单步执行 (F8) 10000 次来尝试找出它为什么一直跳过。但是每次我创建一个 for 循环时,它甚至都不会运行它的第一行。

明确地说,我有一个 Do While ... 循环的每个地方,它应该是一个 For Next。但是每次进行此更改都会破坏代码,因为 do while 更改为 for 的每个位置,都将完全跳过代码。即使我将 i 值重置为 0。即使每个循环都有不同的迭代器,也会出现问题。

在装有 Office 2010 的 Intel i5 上运行 w8。

For i=1 To i = 100 
    If (i >= startRow And i <= stopRow And Not rowDone(i) And Not i = colFocus) Then
        colCurPayAmounts(i) = S_Debt.Cells(i, 5) 
    Else 
        colCurPayAmounts(i) = 0 
    End If i = i + 1 
Next i 

【问题讨论】:

  • 想举一个没有运行的For...Next循环的例子吗?
  • 提示 - 删除所有与问题无关的文本。您的经历或睡眠不足与我们能否帮助您无关,也不会帮助下一个遇到同样问题并登上您职位的人。如@Rory 提到的,您如何尝试使用For 循环而不使用Each 的示例是更重要的信息。
  • 你的故事太长了,所以我认为没有多少人愿意阅读并尝试提供帮助。你可以从删除第一段开始
  • @Rory 是的,我看到的问题是:For i=1 To i = 100 If (i &gt;= startRow And i &lt;= stopRow And Not rowDone(i) And Not i = colFocus) Then colCurPayAmounts(i) = S_Debt.Cells(i, 5) Else colCurPayAmounts(i) = 0 End If i = i + 1 Next i 从 Do While i
  • 问题是它应该是For i = 1 To 100 而不是For i = 1 To i = 100

标签: algorithm vba excel for-loop excel-2010


【解决方案1】:

问题是它应该是 For i = 1 To 100 而不是 For i = 1 To i = 100 @Rory

【讨论】:

  • 这就是问题所在。我没有正确使用 To 运算符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2013-02-05
  • 1970-01-01
相关资源
最近更新 更多