我有以下代码需要重复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
我是新手,所以我不知道它是否是我问题最优雅的解决方案,但它确实能够胜任。问题是我需要1000行的相同代码,并且多次手动更改单元格数似乎是一项艰巨的任务。
你能帮我解决问题吗?
我感谢所有的帮助,提前谢谢。
答案 0 :(得分:3)
你可以使用' 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
尝试一下,看看你得到了什么,让我们知道它是怎么回事:)
答案 1 :(得分:3)
使用数组会更快:
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
答案 2 :(得分:0)
这是您应该避免的学习。请在您的代码中选择。
请看here
请参阅以下简化代码。
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
答案 3 :(得分:-3)
不要使用" A1"样式单元格地址,但Cell(Row, Col)
而不是......