For Loop超出参数VBA

时间:2016-06-24 16:01:44

标签: excel vba excel-vba for-loop

我执行了以下循环操作,使每个单元格下移,直到达到与另一列中最后一个使用过的单元格相同的单元格。然而,它远远超出了最后使用的细胞。它工作正常,但运行时需要更长的时间,特别是当它有30,000行时要通过!有人对此有任何想法吗?

Dim i As Long
lMaxRows = Cells(Rows.Count, "K").End(xlUp).Row
For i = 1 To lMaxRows
    Range("D" & lMaxRows + 1).Select
    ActiveCell.FormulaR1C1 = "0:00:00"
    lMaxRows = Cells(Rows.Count, "E").End(xlUp).Row
    Range("E" & lMaxRows + 1).Select
    ActiveCell.FormulaR1C1 = "1"
Next i

2 个答案:

答案 0 :(得分:5)

定义父工作表,避免一次选择并填充所有单元格。

With Worksheets("Sheet1")
    With .Range(.Cells(1, "K"), .Cells(.Rows.Count, "K").End(xlUp))
        .Offset(0, -7) = "0:00:00"
        .Offset(0, -6) = 1
    End With
End With

答案 1 :(得分:0)

我认为这是由于lMaxRows用法和循环。

这有用吗?

Sub t2()
Dim lMaxRows&, xMaxRows&
Dim i       As Long
lMaxRows = Cells(Rows.Count, "K").End(xlUp).Row
i = 1
Do While i <= lMaxRows
    Range("D" & lMaxRows + 1).FormulaR1C1 = "0:00:00"
    xMaxRows = Cells(Rows.Count, "E").End(xlUp).Row
    Range("E" & xMaxRows + 1).FormulaR1C1 = "1"
    i = i + 1
Loop
End Sub

如果没有一些样本数据,很难知道你想做什么/期望输出什么。