优化后的代码:

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,避免了与第一个循环的变量重名的问题

优化代码: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

原文地址: http://www.cveoy.top/t/topic/emuR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录