Do Until循环不起作用。有任何想法吗?

时间:2013-09-18 16:43:12

标签: excel vba nested-loops

我正在尝试制作一个移动单元格范围的程序,但是我的一个Do循环不起作用。特别是列爬行的元素。当程序运行时只有A7:A9被填充而不是A7:J9。爬行确实适用于第1行到L1的移动,如果红线中没有值,则可以工作(如果A10为空,则B7:B9将填充)。我的错是什么?

Sub Columntest()
Dim i As Integer, j As Integer, k As Integer
    i = 1
    j = 2
    k = 7
    Do Until i = 11
        Range("L1").Formula = Cells(1, i)
        If Cells(10, i).Value = "Low" Then
            Do Until j = 6
                Cells(j + 15, 1).Formula = Cells(j, i)
            j = j + 1
            Loop
                Do Until k = 10
                    Cells(k + 5, 1).Copy
                    Cells(k, i).PasteSpecial xlPasteValues
                k = k + 1
                Loop
        End If
        If Cells(10, i).Value = "High" Then
            Do Until j = 6
                Cells(j + 15, 1).Formula = Cells(j, i)
            j = j + 1
            Loop
                Do Until k = 10
                    Cells(k + 5, 2).Copy
                    Cells(k, i).PasteSpecial xlPasteValues
                k = k + 1
                    Loop
        End If
    i = i + 1
    Loop

End Sub

1 个答案:

答案 0 :(得分:4)

J& K变量应在do while循环中设置为默认值:

i = 1

Do Until i = 11

    j = 2
    k = 7
    ......
    ......
    ...... and so son  

因为曾经的J& K在第一次循环后达到最大值,它永远不会进入J& S的Do While循环。再次K,直到你重置J& K的价值观。