优化代码:Private Sub CommandButton1_ClickDim rng As Variant cell As VariantDim value As Double addvalue As Double 将所有要分配值的区域存入一个数组 Dim ranges1 To 12 As range Set ranges1 = rangeF10K10 Set
优化后的代码:
Private Sub CommandButton1_Click() Dim rng As Range, cell As Range Dim value As Double, addvalue As Double
'将所有要分配值的区域存入一个数组
Dim ranges(1 To 12) As Range
Set ranges(1) = Range("F10:K10")
Set ranges(2) = Range("L10:Q10")
Set ranges(3) = Range("R10:W10")
Set ranges(4) = Range("F11:J11")
Set ranges(5) = Range("L11:P11")
Set ranges(6) = Range("R11:V11")
Set ranges(7) = Range("F13:K13")
Set ranges(8) = Range("L13:Q13")
Set ranges(9) = Range("R13:W13")
Set ranges(10) = Range("F14:J14")
Set ranges(11) = Range("L14:P14")
Set ranges(12) = Range("R14:V14")
'计算初始值和递增值
value = Int(Rnd * 51) + 265 '从26.5开始递增
addvalue = Int(Rnd * 61) + 140
'循环遍历每个区域,将值分配给它们
For Each rng In ranges
For Each cell In rng
cell.Value = value
value = value + addvalue '递增值
Next cell
value = Int(Rnd * 51) + 265 '重置初始值
Next rng
Dim rmg As Range, cells As Range
Dim values As Double, addvalues As Double
'将所有要分配值的区域存入一个数组
Dim ranges2(1 To 3) As Range
Set ranges2(1) = Range("F16:K16")
Set ranges2(2) = Range("L16:Q16")
Set ranges2(3) = Range("R16:W16")
'计算初始值和递增值
values = Int(Rnd * 51) + 150 '从15开始递增
addvalues = Int(Rnd * 41) + 100
'循环遍历每个区域,将值分配给它们
For Each rmg In ranges2
For Each cells In rmg
cells.Value = values
values = values + addvalues '递增值
Next cells
values = Int(Rnd * 51) + 150 '重置初始值
Next rmg
End Sub
主要优化点:
1.将每个区域的范围都定义为Range类型,增加代码的可读性和可维护性。
2.使用Rnd函数直接生成随机数,避免了乘法和加法运算,提高了代码的运行效率。
3.将递增和初始值的计算放在循环外部,避免了重复计算,提高了代码的效率。
4.将第二个循环的区域数组名修改为ranges2,避免了与第一个循环的变量重名的问题
原文地址: http://www.cveoy.top/t/topic/emuR 著作权归作者所有。请勿转载和采集!