对于每个循环,需要跳过

时间:2014-11-13 01:47:25

标签: vba excel-vba excel

我遇到了一个问题,我在For Each Next循环中陷入无限循环(无限到范围的末尾,即)。我知道我不能倒退,当然也不会有一个独立的"下一个":

Dim region As Range
Set region = Range("C4:CC4")

For Each Cell In region
    If Len(Cell) > 0 Then
        Cell.Offset(0, 1) = Cell.Value
        **Need "Next Cell" Here**
    End If
Next Cell

编辑:到目前为止,感谢您的回答,但我想我需要澄清一下:问题不在于无限循环本身。现在,它正在按照我的范围逐个细胞去查看它是否有在单元格中写入的东西。如果是,则将其复制到其右侧的一个并循环。问题特别是如果复制一个值,那么它需要跳过刚刚复制了值的那个单元格,否则它会开始无限循环。从本质上讲,我需要一种方法来跳过" Skip"或" Next Cell"在If语句的中间。

编辑2 再次感谢 - Cool Blue的评论链接是解决方案!

2 个答案:

答案 0 :(得分:1)

试试这个。我希望它有所帮助。

Dim region As Range
Dim firstcell, lastcell As String
firstcell = "C4"
lastcell = "CC4"

Set region = Range(firstcell & ":" & lastcell)

For Each CELL In region
    If Len(CELL) > 0 Then
        CELL.Offset(0, 1) = CELL.Value
        ' **Need "Next Cell" Here**
        If Replace(CELL.Address, "$", "") = lastcell Then Exit For
    End If
Next CELL

答案 1 :(得分:0)

我对这个答案迟到了,但无论如何......它可能非常简单,你甚至不需要任何if语句。诀窍是只循环througt(特殊)单元格,这些单元格具有一些(常量)内容而不是遍历所有单元格。 HTH

Dim region As Range
Dim myCell As Range

Set region = Range("C4:CC4")

For Each myCell In region.SpecialCells(xlCellTypeConstants)
    myCell.Offset(0, 1) = myCell.Value
Next myCell