在Excel中没有下一个

时间:2018-06-07 17:18:15

标签: excel vba excel-vba

我正在尝试使用https://stackoverflow.com/a/10693789/1992004中提供的一种VBA宏获得所有可能的组合,但会收到错误For without Next。我将来自另一个线程的源与我的比较,但没有发现这种差异,这可能导致此错误。

你看,导致这个错误的原因是什么? - 请指点我。我的守则如下。

Option Explicit

Sub Sample()
    Dim l As Long, m As Long, n As Long, o As Long, p As Long, q As Long, r As Long, s As Long, t As Long, u As Long
    Dim CountComb As Long, lastrow As Long

    Range("L2").Value = Now

    Application.ScreenUpdating = False

    CountComb = 0: lastrow = 18

    For l = 1 To 1: For m = 1 To 2
    For n = 1 To 2: For o = 1 To 18
    For p = 1 To 15: For q = 1 To 10
    For r = 1 To 10: For s = 1 To 17
    For t = 1 To 3: For u = 1 To 3
        Range("L" & lastrow).Value = Range("A" & l).Value & "/" & _
                                     Range("B" & m).Value & "/" & _
                                     Range("C" & n).Value & "/" & _
                                     Range("D" & o).Value & "/" & _
                                     Range("E" & p).Value & "/" & _
                                     Range("F" & q).Value & "/" & _
                                     Range("G" & r).Value & "/" & _
                                     Range("H" & s).Value & "/" & _
                                     Range("I" & t).Value & "/" & _
                                     Range("J" & u).Value
        lastrow = lastrow + 1
        CountComb = CountComb + 1
    Next: Next
    Next: Next

    Range("L1").Value = CountComb
    Range("L3").Value = Now

    Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:4)

上面的所有评论都解释了你的问题,但这就是你的代码在适当的缩进和缺失的" next"之后的样子。语句:

For l = 1 To 1
    For m = 1 To 2
        For n = 1 To 2
            For o = 1 To 18
                For p = 1 To 15
                    For q = 1 To 10
                        For r = 1 To 10
                            For s = 1 To 17
                                For t = 1 To 3
                                    For u = 1 To 3
                                        Range("L" & lastrow).Value = Range("A" & l).Value & "/" & _
                                                                     Range("B" & m).Value & "/" & _
                                                                     Range("C" & n).Value & "/" & _
                                                                     Range("D" & o).Value & "/" & _
                                                                     Range("E" & p).Value & "/" & _
                                                                     Range("F" & q).Value & "/" & _
                                                                     Range("G" & r).Value & "/" & _
                                                                     Range("H" & s).Value & "/" & _
                                                                     Range("I" & t).Value & "/" & _
                                                                     Range("J" & u).Value
                                        lastrow = lastrow + 1
                                        CountComb = CountComb + 1
                                    Next
                                Next
                            Next
                        Next
                    Next
                Next
            Next
        Next
    Next
Next

至少,它会立即显示代码失败的地方。