在VBA中重复代码

我有以下代码,我需要重复1000次:

Option Explicit Sub Turn() Range("f2").Select If Range("e2").Value = "00/00/00" Then ActiveCell.Value = 0 ElseIf Range("e2").Value Then ActiveCell.Value = Range("e2") End If Range("f2").Select If ActiveCell.Value > 0 Then Range("G2") = Range("f2") - Range("b2") End If End Sub 

我是新来的,所以我不知道这是否是对我的问题的最优雅的解决scheme,但它是做这个工作的。 问题是我需要相同的代码1000行,这似乎是一个强大的任务手动更改多次的单元格号码。

你能帮我解决我的问题吗?

我感谢所有帮助,提前致谢。

你可以使用'for循环'来实现它。 这应该是正确的:

 Option Explicit Sub Turn() Dim i As Long For i = 2 to 1001 Range("f" & i).Select If Range("e" & i).Value = "00/00/00" Then ActiveCell.Value = 0 ElseIf Range("e" & i).Value Then ActiveCell.Value = Range("e" & i) End If Range("f" & i).Select If ActiveCell.Value > 0 Then Range("G" & i) = Range("f" & i) - Range("b" & i) End If Next i End Sub 

试试看,看看你到底在哪里,让我们知道它是怎么回事:)

对于一个数组来说这将会快得多:

 Sub Recut() Dim X, Y Dim lngCnt As Long X = [F2:G1001].Value2 Y = [B2:B1001].Value2 For lngCnt = 1 To UBound(X) If X(lngCnt, 1) = "00/00/00" Then X(lngCnt, 1) = 0 Else If X(lngCnt, 1) > 0 Then X(lngCnt, 2) = X(lngCnt, 1) - Y(lngCnt, 1) End If Next [F2:G1001].Value2 = X End Sub 

这是为了你的学习,你应该避免。select你的代码。

请看看这里

请参阅下面的简化代码。

 Sub Turn() Dim i As Long For i = 2 To 1001 If Range("F" & i).Value = "00/00/00" Then Range("F" & i).Value = 0 ElseIf Range("F" & i).Value > 0 Then Ramge("G" & i).Value = Range("F" & i).Value - Range("B" & i).Value End If Next i End Sub 

不要使用“A1”风格的单元格地址,但Cell(Row, Col)而不是…