Excel 有没有更好的方法来编写这个VBA代码?
只是想知道是否有任何方法可以加速下面的代码? 提前谢谢Excel 有没有更好的方法来编写这个VBA代码?,excel,vba,Excel,Vba,只是想知道是否有任何方法可以加速下面的代码? 提前谢谢 Sub Test() Dim ws As Worksheet Range("R28") = Mid(Range("Q7"), 55, 3) / 100 Range("R29") = Mid(Range("Q7"), 58, 3) / 100 Range("R30") = Mid(Range("Q7"), 61, 3) /
Sub Test()
Dim ws As Worksheet
Range("R28") = Mid(Range("Q7"), 55, 3) / 100
Range("R29") = Mid(Range("Q7"), 58, 3) / 100
Range("R30") = Mid(Range("Q7"), 61, 3) / 100
Range("R31") = Mid(Range("Q7"), 64, 3) / 100
Range("R32") = Mid(Range("Q7"), 67, 3) / 100
Range("R33") = Mid(Range("Q7"), 70, 3) / 100
Range("R34") = Mid(Range("Q7"), 73, 3) / 100
Range("R35") = Mid(Range("Q7"), 76, 3) / 100
Range("R36") = Mid(Range("Q7"), 79, 3) / 100
Range("R37") = Mid(Range("Q7"), 82, 3) / 100
End Sub
使用循环:
Dim cell As Range
For Each cell In Range("R28:R37")
Dim i As Long
cell.Value = Mid(Range("Q7").Value, 55 + i * 3, 3) / 100
i = i + 1
Next
或者试试这个
With Range("R28:R37")
.Formula = "=MID($Q$7, 55 + (ROW()-28) * 3, 3) / 100"
.Value = .Value
End With
或者下面的命令使其动态化
With Range("R28:R37")
.Formula = "=MID($Q$7, 55 + (ROW()-" & .Row & ") * 3, 3) / 100"
.Value = .Value
End With
Option Explicit
Sub foo()
Dim rng As Range, s As String, a As Variant, i As Integer
Set rng = Range("R28:R37")
s = Range("Q7") ' minimize slow reading of cell in further loop
a = rng ' shortest and simple making result array of target size
' same but longer: ReDim a(1 To rng.Rows.Count, 1 To 1)
For i = 1 To UBound(a, 1)
a(i, 1) = Mid(s, i * 3 + 52, 3) / 100
Next i
rng.Value = a ' fast write result to range
End Sub