【问题标题】:VBA For Loop - go longer than initially plannedVBA For Loop - 比最初计划的时间更长
【发布时间】:2019-10-16 19:54:42
【问题描述】:

我想要一个 Excel VBA For Loop,它的运行时间比我最初计划的要长。例如:

Sub Test()
 LR = 10

 For i = 1 To LR
    Cells(i, 1).Value = 1
    If Cells(i, 2).Value <> "" Then
       LR = LR + 1
    End If
 Next i
End Sub

假设第 2/B 列中有内容,我希望在每次迭代时为 LR 添加 1。我希望这个循环继续到第 20 行。它在第 10 行停止,这是最初声明的内容。如果我需要根据条件扩展它,我该如何解决这个问题,并让循环更长?

【问题讨论】:

  • 为什么要这样做?你能解释一下你的用例是什么/你真正想要做什么吗?
  • 一旦设置for循环结束就不能改变了。
  • 您需要更改为 Do While 或 Do Until 循环
  • 注意 - 如果 LR 实际上在 for 循环中被更改,那么你的循环将是一个无限循环,它不会在第 20 行停止。但正如已经指出的那样,这听起来像一个X-Y 问题,我们需要更多关于您实际尝试做什么的详细信息。
  • @ScottCraner 感谢您澄清我需要使用 Do While 或 Unitl 循环。我可以在循环内修改 LR 是有道理的,但显然这不起作用。根据您的建议,我能够完成任务。谢谢你的建议。

标签: excel vba for-loop


【解决方案1】:

我相信斯科特是正确的。

未经测试

Sub Test()
LR = 10

Do Until LR = 20
    'Inside the loop you can use Exit Sub if a condition is meet before LR = 20
    If LR > 20 Then
        Exit Sub
    End If
    LR = LR + 1
Loop
End Sub

【讨论】:

    猜你喜欢
    • 2022-12-10
    • 1970-01-01
    • 2014-05-30
    • 2017-08-06
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多