重构以避免多次使用 for...next

Refactor to avoid using for...next more than once

我有这个:

For k = 1 to 100
    Statement 1
Next

For j = 1 to 100
    Statement 2
Next

For l = 1 to 100
    Statement 3
Next

我想将所有三个语句放在一个 For...Next

For k = 1 to 100
    Statement 1
    Statement 2
    Statement 3
Next

但是我不能,因为每个语句的循环需要按顺序 运行(语句 1 需要首先对从 1 到 100 的所有值进行 运行,然后相同但对于语句 2 等...)。有没有办法简化这个?我相信一定有。谢谢!

For n=1 to 3
For k = 1 to 100
    If n=1 Then Statement 1
    If n=2 Then Statement 2
    If n=3 Then Statement 3
Next
Next

但实际上你的第一个例子更简洁,将所有语句放在一个循环中根本不是简单的事情......

我拒绝这个问题的主旨。

你的第一个代码片段是一种更好的方法,而不是将所有内容硬塞进一个 For...Next 循环中并强制输入奇怪的条件。这会使事情变得更加复杂和可读性降低,并且节省几行可悲的代码并不是这样做的好借口。

更明确地回答你的问题:有没有办法简化这个?

在某种程度上,很难,因为您显示的代码非常简单。

但在一般情况下,任何复杂性都应分解为更小的部分,即过程。简化代码的唯一干净方法是将循环打包到子过程中,以简化高级过程。

例如,您的高级程序如下所示:

Dim n As Long
n = 100
DoThing1 n
DoThing2 n
DoThing3 n

具有较低级别的程序:

Sub DoThing1(ByVal n As Long)
    Dim i As Long
    For i = 1 To n
        Statement1
    Next i
End Sub

其他两个类似。