我不确定为什么这会无限循环。虽然我设置了我的范围,但是在检查了我的范围(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
答案 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:F9
,cel
,B8
... C8
,D8
等}}设置为B9
,如上所述,对于该范围内未评估为“”的任何单元格,您最终会得到50个重复值。
此代码修复了该问题,并检查了单元格的文本属性,因此如果遇到单元格错误(#N / A等),它就不会中断
C9
道歉,如果这听起来居高临下,那不是我的意图。
希望这有帮助!