Excel 循环直到单元格为空

Excel 循环直到单元格为空,excel,for-loop,vba,Excel,For Loop,Vba,我已经编写了宏,但现在我需要它在循环中运行,直到单元格I2为空 有人能帮忙吗 Sheets("Value Imported Data").Select Range("I2:Q2").Select Selection.Copy Sheets("Good data").Select Range("I1").Select Selection.End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Oper

我已经编写了宏,但现在我需要它在循环中运行,直到单元格I2为空

有人能帮忙吗

Sheets("Value Imported Data").Select
Range("I2:Q2").Select
Selection.Copy
Sheets("Good data").Select
Range("I1").Select
Selection.End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Sheets("Value Imported Data").Select
ActiveCell.Resize(40, 9).Select
Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
我以为会是这样,但根本不起作用

Sub CandidatesInfo()
    Dim r As Range
    Dim Cell As Range
Sheets("Value Imported Data").Select

    Set r = Range("I2")

    For Each Cell In r
    If r.Notempty Then


        Range("I2:Q2").Select
        Selection.Copy
        Sheets("Good data").Select
        Range("I1").Select
        Selection.End(xlDown).Offset(1, 0).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False

        Sheets("Value Imported Data").Select
        ActiveCell.Resize(40, 9).Select
        Application.CutCopyMode = False
            Selection.Delete Shift:=xlUp
    End If
    Next

End Sub
基本上我想做的是如果I2是空的,什么也不做,但是如果它不是空的,把I2到Q2复制到另一个工作表中,一旦复制完,回到复制信息的工作表中,删除下面的40个信息,删除右边的9个信息,然后重新开始。正如我所说的,top宏工作得非常完美,现在只需要从头开始,直到I2为空

感谢您的帮助。
非常感谢

因为范围“r”只有一个单元格“I2”,所以您正在循环抛出一个单元格。因此,您的代码将只运行一次。您不需要在r中设置range(“I2”)来检查它是否为空,只需写:if range(“I2”).value“”,然后。。。注意,在I2为空之前,空不是rangeTo循环的适当选项使用“While”:While Range(“I2”)”。。。。谢谢!!这很好用,但即使我添加一个宏来快速运行一切,也需要一段时间。。。如果有别的办法可以跑得更快,我洗耳恭听。但就目前而言,它可以做到:-)感谢让宏运行得更快的想法。我想现在。。。温德正在使宏变慢。我添加了所有的普通宏,使宏运行得更快,但仍然很慢。谢谢你的帮助。我认为这很慢,因为你在代码中使用了很多“选择”和“选择”。使用“set”对象可以做得更好,例如:set rng=Sheets(“值导入数据”).Range(“I2:Q2”)。在while循环之前设置一次,这样就不必在每个循环中都选择它。