今日学习目标

  • 掌握代码重构技术
  • 提高代码执行效率
  • 改进代码可读性

知识点

1. 代码重构原则

  • 单一职责:每个过程只做一件事
  • DRY原则:避免重复代码
  • KISS原则:保持简单直接

2. 性能优化技巧

  • 减少屏幕更新:Application.ScreenUpdating
  • 避免Select/Activate
  • 使用数组代替单元格操作
  • 合理使用With语句

3. 变量和常量管理

  • 使用有意义的命名
  • 统一变量命名规范
  • 使用常量代替硬编码

今日代码

vba
' 优化前:低效的代码 Sub OldProcessData() Dim i As Long Application.ScreenUpdating = False For i = 1 To 10000 Worksheets("Sheet1").Select Cells(i, 1).Select Selection.Value = i Next i Application.ScreenUpdating = True End Sub ' 优化后:高效的代码 Sub NewProcessData() Dim i As Long Dim ws As Worksheet Dim dataArr() As Variant Application.ScreenUpdating = False Set ws = Worksheets("Sheet1") ' 使用数组批量操作 ReDim dataArr(1 To 10000, 1 To 1) For i = 1 To 10000 dataArr(i, 1) = i Next i ' 一次性写入 With ws .Range(.Cells(1, 1), .Cells(10000, 1)).Value = dataArr End With Application.ScreenUpdating = True MsgBox "处理完成!" End Sub ' 提取公共函数 Sub UpdateSalesReport() Dim ws As Worksheet Set ws = Worksheets("销售") With ws Call FormatHeader(.Range("A1:F1")) Call SetNumberFormat(.Range("D:D"), "#,##0.00") Call AutoFitColumns(.Range("A:F")) End With End Sub Sub FormatHeader(rng As Range) With rng .Font.Bold = True .Interior.Color = RGB(0, 51, 102) .Font.Color = RGB(255, 255, 255) .HorizontalAlignment = xlCenter End With End Sub Sub SetNumberFormat(rng As Range, fmt As String) rng.NumberFormat = fmt End Sub Sub AutoFitColumns(rng As Range) rng.Columns.AutoFit End Sub

练习题

  1. 将重复的数据验证代码提取为公共函数
  2. 使用数组改写单元格循环操作
  3. 添加错误处理和日志记录

参考解答

1. 创建ValidateInput、CheckRequired、CheckNumeric等函数,在各处调用。 2. 将单元格读入数组,处理后再写回,减少IO操作。 3. 使用On Error GoTo添加错误处理,用Print写日志文件。


由在线工具箱(www.vba.net)整理制作