如何在到达第x行之前循环此代码?

时间:2015-11-12 12:42:24

标签: excel vba excel-vba loops

在我的电子表格的G栏中,我想从另一列中提取数据。但不是每排,只有每三排。如何编写一个For Until循环,它接受每三行,以及如何结束循环?

这是我需要在G列中每第三行循环的代码,直到第350行。

ActiveCell.FormulaR1C1 = "=RC[-1]"
Range("G10").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
Range("G13").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
Range("G16").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"

此外,是否有人可以推荐在线资源来学习excel中的VBA宏?

2 个答案:

答案 0 :(得分:1)

为了给你一个起点,试试

Sub Test()
Dim MyRange As Range, Idx As Integer

    Set MyRange = [G10]          ' define a range object
    Idx = 1                      ' row index

    Do While True                ' see note
        MyRange(Idx, 1).FormulaR1C1 = "=RC[-1]"
        Idx = Idx + 3            ' advance by 3 rows
    Loop
End Sub

这里使用的是Range对象,而不是选择和激活单元格。

重要:将Do While True替换为更合适的终止条件......就像这样,您创建了一个无限循环,这对于在调试器中进行测试很有用,但不适用于& #34;无人值守"执行。

合适的终止条件可能是

Do While MyRange(Idx, 1) <> ""      ' as long as G is not empty
Do While MyRange(Idx, 0) <> ""      ' as long as F is not empty
DO While Idx < 200                  ' until a certain position is reached

答案 1 :(得分:0)

您可以使用如下所示的Step 3

Sub loopThroughColumn()

    Dim i As Integer
    Dim LastRow As Integer

    LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "G").End(xlUp).Row

    For i = 1 To LastRow Step 3
        Range("G" & i).FormulaR1C1 = "=RC[-1]"
        MsgBox Range("G" & i).Value
    Next

End Sub

您可以找到用于学习VBA here

的在线资源