VBA循环迭代

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA循环迭代相关的知识,希望对你有一定的参考价值。

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

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

应该是这样的:

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

我不确定如何迭代VBA中的单元格。谢谢!

编辑:

这是我想要做的。谢谢

1   2   3   4                   
5   6   7   8          -->       1 2 3 4 5 6 7 8 9 10 11 12
9   10  11  12
答案

你可以不用每次都选择这样做,试试这个:

For i = 1 To 3

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

Next i
另一答案

这个答案与@ 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

以上是关于VBA循环迭代的主要内容,如果未能解决你的问题,请参考以下文章

没有 VBA 的迭代/循环替换

将不同的函数传递到同一个迭代循环(VBA)

VBA 使用“或”条件执行直到循环

如何在Django视图中使用for循环返回每次迭代[关闭]

为 vba 使用 for 循环

如果单元格内容已经通过,则 vba 下一次迭代