设置主页 | 收藏本站 Excel学习网-公益型的EXCEL在线学习网站,助您轻松办公!

VBA代码编写技巧

2026年08月12日 17:16 发布来源:Excel学习网
    方法1:尽量使用VBA原有的属性、方法和Worksheet函数
    由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说可能对它们不全部了解,这就产生了编程者经常编写与Excel对象的属性、方法相同功能的VBA代码段,而这些代码段的运行效率显然与Excel对象的属性、方法完成任务的速度相差甚大。例如用Range的属性CurrentRegion来返回 Range 对象,该对象代表当前区。(当前区指以任意空白行及空白列的组合为边界的区域)。同样功能的VBA代码需数十行。因此编程前应尽可能多地了解Excel对象的属性、方法。
    充分利用Worksheet函数是提高程序运行速度的极度有效的方法。如求平均工资的例子:
    For Each c In Worksheet(1).Range(″A1:A1000″)
    Totalvalue = Totalvalue + c.value
    Next
    Averagevalue = Totalvalue / Worksheet(1).Range(″A1:A1000″).Rows.Count
    而下面代码程序比上面例子快得多:
    Averagevalue=Application.WorksheetFunction.Average(Worksheets(1).Range(″A1:A1000″))
    其它函数如Count,Counta,Countif,Match,Lookup等等,都能代替相同功能的VBA程序代码,提高程序的运行速度。
    方法2:尽量减少使用对象引用,尤其在循环中
    每一个Excel对象的属性、方法的调用都需要通过OLE接口的一个或多个调用,这些OLE调用都是需要时间的,减少使用对象引用能加快VBA代码的运行。
    例如 1.使用With语句。
    Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.Name=″Pay″
    Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.FontStyle=″Bold″ ...
    则以下语句比上面的快
    With Workbooks(1).Sheets(1).Range(″A1:A1000″).Font
    Name = ″Pay″
    .FontStyle = ″Bold″ ...
    End With
    2.使用对象变量
    如果你发现一个对象引用被多次使用,则你可以将此对象用Set 设置为对象变量,以减少对对象的访问。如:
    Workbooks(1).Sheets(1).Range(″A1″).value = 100
    Workbooks(1).Sheets(1).Range(″A2″).value = 200
    则以下代码比上面的要快:
    Set MySheet = Workbooks(1).Sheets(1)
    MySheet.Range(″A1″).value = 100
    MySheet.Range(″A2″).value = 200
    3.在循环中要尽量减少对象的访问。
    For k = 1 To 1000
    Sheets(″Sheet1″).Select
    Cells(k,1).value = Cells(1,1).value
    Next k
    则以下代码比上面的要快:
    Set Thevalue = Cells(1,1).value
    Sheets(″Sheet1″).Select
    For k = 1 To 1000
    Cells(k,1).value = Thevalue
    Next k
    方法3:减少对象的激活和选择
    如果你的通过录制宏来学习VBA的,则你的VBA程序里一定充满了对象的激活和选择,例如
    Workbooks(XXX).Activate、Sheets(XXX).Select、Range(XXX).Select等,但事实上大多数情况下这些操作不是必需的。例如
    Sheets(″Sheet3″).Select
    Range(″A1″).value = 100
    Range(″A2″).value = 200
    可改为:
    With Sheets(″Sheet3″)
    .Range(″A1″).value = 100
    .Range(″A2″).value = 200
    End With
    方法4:关闭屏幕更新
    如果你的VBA程序前面三条做得比较差,则关闭屏幕更新是提高VBA程序运行速度的最有效的方法,缩短运行时间2/3左右。关闭屏幕更新的方法:
    Application.ScreenUpdate = False
    请不要忘记VBA程序运行结束时再将该值设回来:
    Application.ScreenUpdate = True
原创文章如转载请注明:转载自Excel学习网 [ https://www.excelxxw.com/]
需要保留本文链接地址:https://www.excelxxw.com/jiqiao/2593.html
网站地图 | XML地图 | 免责声明 | 关于我们 | Excel学习网:优秀的EXCEL在线学习和资源分享网站。
版权所有: CopyRight © 2013-2026 www.excelxxw.com All Rights Reserved.
豫ICP备2024075255号 联系我们:12162961@qq.com