【问题标题】:Do Until loop not working. Any ideas?执行直到循环不起作用。有任何想法吗?
【发布时间】:2014-06-10 02:12:17
【问题描述】:

我正在尝试制作一个移动单元格范围的程序,但我的一个 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

结束子

【问题讨论】:

  • 你有没有走过它,看看哪里出了问题?
  • 如果 k 或 j 循环留在其中,则它不会移动到第二列等。问题似乎在于 Do Loop 认为它在结束 If 函数后完成跨度>

标签: excel vba nested-loops


【解决方案1】:

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

i = 1

Do Until i = 11

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

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

【讨论】:

  • 谢谢。现在效果很好,我会投票,但我还没有声誉。
  • 没关系。很高兴我能帮上忙。谢谢,V
猜你喜欢
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 2019-06-06
  • 2021-11-27
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多