VBA循环迭代

时间:2018-09-04 17:16:51

标签: excel vba loops iteration

我需要有关此代码的帮助。它可以工作,但是我想使其循环,而不是手动输入另一行代码。因此,基本上我不想有3个代码块,而是希望成为一个代码块。

Drink

应该是这样的:

ActiveCell.Offset(1, 0).Range("A1:D1").Select
Selection.Cut
ActiveCell.Offset(-1, 4).Range("A1").Select
ActiveSheet.Paste

ActiveCell.Offset(2, -4).Range("A1:D1").Select
Selection.Cut
ActiveCell.Offset(-2, 8).Range("A1").Select
ActiveSheet.Paste

ActiveCell.Offset(3, -8).Range("A1:D1").Select
Selection.Cut
ActiveCell.Offset(-3, 16).Range("A1").Select
ActiveSheet.Paste

我不确定如何在VBA中遍历单元格。谢谢!

编辑:

这就是我想要做的。谢谢

Loop 3{
ActiveCell.Offset(1, 0).Range("A1:D1").Select
Selection.Cut
ActiveCell.Offset(-1, 4).Range("A1").Select
ActiveSheet.Paste
}

2 个答案:

答案 0 :(得分:2)

您可以执行此操作而无需每次选择,请尝试以下操作:

For i = 1 To 3

    ActiveCell.Offset(i, 0).Range("A1:D1").Cut ActiveCell.Offset(0, i * 4)

Next i

答案 1 :(得分:0)

这个答案与@Valon的答案几乎相同,但是我不想继续使用Range("A1:D1")规范,因为它很不常见。相反,我使用.Resize()获取与ActiveCell相邻的单元格。

Dim i As Long
For i = 0 To 2
    ActiveCell.Resize(, 4).offset(i, 0).Cut ActiveCell.offset(0, i * 4)
Next i