VBA循环迭代

问题描述 投票:0回答:2

我需要有关此代码的帮助。它可以工作,但我想把它变成一个循环,而不是手动输入另一行代码。所以基本上没有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
excel vba loops iteration
2个回答
2
投票

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

For i = 1 To 3

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

Next i

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
© www.soinside.com 2019 - 2024. All rights reserved.