优化后的代码:

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

通过这些优化,代码更加简洁、高效,便于理解和维护。


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

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