VBA循环通过空列

时间:2016-05-26 21:11:03

标签: excel vba excel-vba loops

我坚持如何完成一个具有特定结果的循环。

我附上了我基本上想要发生的事情的屏幕截图。

VBA将从B1开始我希望VBA向右循环空列,直到它到达任何字符/字符串(结果可以出现在B1右边的任何单元格中,并且是一个可变字。 )一旦找到包含任何字符的单元格,我想复制它并将其移动到B5。我有以下代码,它几乎做了我想要的除了它只是保持循环的事实。

代码:

Sub looptillnotempty()
    Dim notempty As Boolean
    notempty = False
    Do Until notempty
        If IsEmpty(ActiveCell) = True Then
            ActiveCell.Offset(0, 1).Select
        Else
            ActiveCell.Copy
            Range("C5").PasteSpecial Paste:=xlPasteFormulas
        End If
    Loop
    Range("C8").Select
End Sub

我想要完成的任务:

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用Exit Do退出循环,如下所示:

Sub looptillnotempty()
    Dim notempty As Boolean
    notempty = False
    Do Until notempty
        If IsEmpty(ActiveCell) = True Then
            ActiveCell.Offset(0, 1).Select
        Else
            ActiveCell.Copy
            Range("B5").PasteSpecial Paste:=xlPasteFormulas
            Exit Do
        End If
    Loop
    Range("C8").Select
End Sub

答案 1 :(得分:2)

你可以像下面那样

Sub looptillnotempty()
  With ActiveSheet.Range("B1").End(xlToRight)
      If .Value <> "" Then ActiveSheet.Range("B5").Formula = .Formula
  End With
  Range("C8").Select
End Sub

只需选择将要找到的单元格公式复制到哪个单元格中,因为在您的问题文本中您编写了“B5”,在您的代码示例中您编写了“C5”并且在屏幕截图中它似乎是“A5”...