设定范围内的无限循环

时间:2015-11-06 19:48:05

标签: excel vba excel-vba

我不确定为什么这会无限循环。虽然我设置了我的范围,但是在检查了我的范围(rng)中的所有行之后,我的代码不会退出循环。

Option Explicit

Sub prnt()
    Dim i As Long
    Dim rng As Range
    Dim cell As Range
    Dim row As Range

    Set rng = ActiveSheet.Range("B8:F57")

    For Each row In rng.Rows
        For Each cell In rng.Rows.Cells
            If cell <> "" Then
                cell.Copy
                Range("i8").Offset(i, 0).PasteSpecial
                i = i + 1
            Else
            End If

        Next cell

    Next row


End Sub

1 个答案:

答案 0 :(得分:2)

好的,我必须正确格式化你的代码以查看这个问题,并且在这里,正确缩进没有空格并且deduction.Sequence变量交换为cell,{{1变量换成cel

row

我立即注意到你的第一个循环确实没有代码。您使用rngRow(或原始版本中的Sub prnt() Dim i As Long Dim rng As Range Dim cel As Range Dim rngRow As Range Set rng = ActiveSheet.Range("B8:F57") For Each rngRow In rng.Rows For Each cel In rng.Rows.Cells If cel <> "" Then cel.Copy Range("i8").Offset(i, 0).PasteSpecial i = i + 1 Else End If Next cell Next row End Sub )作为循环控制变量,但从不在代码本身中引用它,因此程序已经花费了50倍的时间来处理,因为您正在循环250个细胞,目前无缘无故地各50次。

每个循环的rngRow变量设置为row,然后设置为rngRow等。

B8:F8变量在{{1}之前设置为B9:F9celB8 ... C8D8等}}设置为B9,如上所述,对于该范围内未评估为“”的任何单元格,您最终会得到50个重复值。

此代码修复了该问题,并检查了单元格的文本属性,因此如果遇到单元格错误(#N / A等),它就不会中断

C9

道歉,如果这听起来居高临下,那不是我的意图。

希望这有帮助!