重构以避免使用...下一次不止一次

时间:2015-04-12 16:15:23

标签: vba loops for-loop refactoring

我有这个:

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等...) 。有没有办法简化这个?我相信一定有。谢谢!

2 个答案:

答案 0 :(得分:1)

我拒绝这个问题的主旨。

你的第一个代码片段是一个更好的方法来做到这一点,而不是将所有内容整合到一个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

和其他两个相似。

答案 1 :(得分:0)

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

但实际上你的第一个例子比较整洁,并且将所有语句放在一个循环中并不是简单的事情......