Vba 集合范围内的无限循环
我不知道为什么这会无限循环。虽然我设置了范围,但在检查了范围(rng)中的所有行之后,我的代码不会退出循环Vba 集合范围内的无限循环,vba,excel,Vba,Excel,我不知道为什么这会无限循环。虽然我设置了范围,但在检查了范围(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 E
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
选项显式
副主席()
我想我会坚持多久
变暗rng As范围
暗淡单元格作为范围
暗行作为范围
设置rng=ActiveSheet.Range(“B8:F57”)
对于rng.行中的每一行
对于rng.Rows.Cells中的每个单元格
如果是单元格“”,则
手机,收到
范围(“i8”)。偏移量(i,0)。特殊
i=i+1
其他的
如果结束
下一个细胞
下一排
端接头
好的,我必须正确设置代码的格式来解决这个问题,在这里,它是正确缩进的,没有空格,单元格
变量替换为cel
,而行
变量替换为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
道歉如果这听起来有点屈尊,那不是我的本意
希望这有帮助
用于行中的每个单元格。Cells
不用于行中的每个单元格。Cells
@TimWilliams:不是不同意,只是想知道:如果他只想遍历列表中的所有单元格,为什么要对行中的每个单元格执行两个循环,为什么不只对行中的每个单元格执行,除非他想在两排之间做点什么。但是,由于OP写下了您所说的是真的,除了删除.rows
之外,所以对于rng中的每个单元格只有。单元格
不知道您的情况,您可能能够循环通过每个非空白单元格,设置rng=Range(“B8:F57”)。特殊单元格(xlCellTypeConstants,23)
@ScottCraner:谢谢您的澄清,我不确定是rng.cells
还是rng.rows.cells
我自己;)为什么不放弃可怕的剪贴板,直接分配:Range(“i8”).Offset(i,0)。Text=cel.Text
?@user1016274,因为有时您还希望保留格式、条件格式、验证、公式,甚至错误状态,AFAIK最好的方法是复制/粘贴。
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 cel In rng.Rows.Cells
If cel.Text <> "" Then
cel.Copy
Range("i8").Offset(i, 0).PasteSpecial
i = i + 1
End If
Next cel
End Sub