首页 / 国际 / 正文

option explicit([干货分享]VBA代码优化常用技巧)

放大字体  缩小字体 来源:汽车应急包 2026-04-17 17:26  浏览次数:7


大家都知道在Office里面可以用VBA进行二次开发,为日常工作提供了一条快捷的途径,善用它,可以大大的改善我们的工作体验和质量。今天跟大家分享的不是VBA本身,而是一些VBA代码常用的优化技巧,大神请绕路(也欢迎指点),VBA初学者或者爱好者可以看看,哪怕是得到一点点启发和借鉴,那也是极好的。

很多时候我们要实现某些功能,如果本身对excel不熟悉的话,可能会想办法去实现某些看上去很复杂的功能,殊不知,其实excel本身已经提供了类似的功能,有的时候可能仅仅是一个函数就解决了的事情,结果你搞半天,说不定辛苦弄出来,结果效率和效果还没内置的好。

也有例外,如:

dim arr(),temp as byte,i,j,tim as long

arr=array(1,7,8,6,9,3,5,7,6,8,9,4,1,2,4) '数组的值

for i=1 to UBound(arr) '循环比较数组中所有元素

next i

end sub

2.尽量减少使用对象引用

  • 用set语句将反复引用的对象设置为对象变量,因为变量存在内存中

  • sub批注循环()

  • for each com in activeSheet.comments

  • next

  • endsub

  • dim rng as range,address as string,bl as boolean

  • for each rng in activesheet.usedrange

  • if err=0 then address=address&rng.address(0,0)&chr(10)

  • next rng

  • end sub

  • 少用select和activate语句

4.关闭屏幕更新

Application.ScreenUpdating=False '通常放在循环语句前...Application.ScreenUpdating=True

强制变量声明(OptionExplicit):在设置里面勾选,会节省时间,自动带出,而不是自己手动敲出来的

  • 选择合适的变量类型:缺省会默认Variant型,但是会增加内存耗用,能明确的就具体指明

  • 讲到这里,想强调一下,有时候为了效率,有的人喜欢在代码编写的时候采用一些简写或者隐式声明,这个确实会让我们少敲不少字,但是带来的另外一个问题是,一旦代码出现了问题,调试或者找错误的时候就会很抓狂了,可能从整体的时间效率上反而不划算,所以还是建议大家养成良好的编程习惯,变量都写清楚,勤备注,这样易读性和可维护性好

    VBA中有2套字符串处理函数,带$和不带$的。

    7.善用循环中的步长减少循环次数

    讲到循环,还有一个类似的例子:

    8.利用数组代替单元格对象

    这个应该是应用的最多的,效果是最明显的,少了单元格的交互,会省不少事。

    实例:

    sub 对小于60分成绩进行注释()

    '重置第二个数组变量大小

    '循环数组for i=1 to UBound(arr1)

    next i

    range([c2],cells(rows.count,2).end(xlup).offset(0,1))=arr2

    9.重复调用UDF时才使用它

    为了程序运行的高效,我们通常会把长代码拆成几个子代码或者自定义函数,来相互调用。达到方便调试和互相引用的目的。UDF适合多次调用时,否则调用的速度甚至比执行的速度更慢。

    10.将不改变值或者属性的语句放到循环语句外

    11.利用长度计算判断单元格是否为空

    xx=""

    xx is nothing

    range("a1")="" '建议len法,此法效率更高len(range("a1"))=0 '.value省略,range的默认属性

    程序运行时间测试代码:

    dim tim as long

    for ...

    msgbox format(timer-tim,"0.00")&"秒" '执行报告时间

    通常有2种方法timer函数和time函数,网上很多人问有啥区别,搞不清楚,这里简单解释一下(理解有误的话,望高手不吝赐教):

    1. 时间比较长时,可以用time,time是按照时间如22:58:30这样记录的,即运行前后电脑时间相减

    更多精彩,敬请关注微信号Excel-365,后续有更新,会及时分享!

  • 打赏
    0相关评论
    热门搜索排行
    精彩图片
    友情链接
    声明:本站信息均由用户注册后自行发布,本站不承担任何法律责任。如有侵权请告知立立即做删除处理。
    违法不良信息举报邮箱:115904045
    头条快讯网 版权所有
    中国互联网举报中心