VBA代码编写技巧

  方法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

时间: 2024-09-19 08:52:07

VBA代码编写技巧的相关文章

《高效的JavaScript代码编写技巧》阅读笔记

<高效的JavaScript代码编写技巧>虽然是不算长的网上文章,但却是非常好的讲述.作者围绕了如何更高效地进行 DOM 操作,作出多方面.有经验的分析与总结.有的是语言编码的技巧(如循环),有的是浏览器本身不足而去要克服的问题,有的是常见的陷阱,要我们如何去注意并规避之.更重要的是,作者不但陈述了问题的现象,在列出解决问题方法的同时,还事先给出错误的实例,反面的示例,以让读者更好地对比,通过"比较的方法"容易快速地体会其中的差异以及细微之处. 原文在:http://www

用VBA代码编写一键插入Excel斜线表头

有的时候,我们要在Excel中添加斜线表头,可Excel并没有提供制作斜线表头的功能,每次都要手工画一条斜线,非常麻烦.有没有解决方法呢?其实,我们可以利用VBA代码可以编写一个功能,一键插入Excel斜线表头. 用"控件工具箱"中的"命令按钮"控件,在工作表中绘制一个命令按钮,将"Caption"属性改为"一键插入斜线表头",双击该按钮,在"Click"事件中编写代码,其中关键代码如下. 关键代码: '获

CSS代码编写技巧

CSS代码编写的两则小技巧 在一行内声明CSS 我们来对比下面两段代码: h2 {font-size:18px; border:1px solid blue; color:#000; background-color:#FFF;}h2 {font-size:18px;border:1px solid blue;color:#000;background-color:#FFF;} 第二种看起来的确格式化,但是不会在阅读上有任何帮助.写在一行内可以让你更快的找到需要的部分. 以前我也是写成类似第二种

30个HTML代码编写技巧

Javascript和CSS都有许多优秀的框架,但如果你是初学者,不要急于使用它们. 本文总结了30条HTML代码编写指南,只要在编写HTML代码的过程中牢记它们,灵活运用,你一定会写出一手漂亮的代码,早日迈入专业开发者的行列. 1. 一定要闭合HTML标签 在以往的页面源代码里,经常看到这样的语句: <li>Some text here. <li>Some new text here. <li>You get the idea. 也许过去我们可以容忍这样的非闭合HTM

最佳JS代码编写的14条技巧_javascript技巧

写任何编程代码,不同的开发者都会有不同的见解.但参考一下总是好的,下面是来自Javascript Toolbox发布的14条最佳JS代码编写技巧. 1. 总是使用 var 在javascript中,变量不是全局范围的就是函数范围的,使用var关键词将是保持变量简洁明了的关键.当声明一个或者是全局或者是函数级(function-level)的变量,需总是前置var关键词,下面的例子将强调不这样做潜在的问题. 不使用 Var 造成的问题 var i=0; // This is good - crea

JS编码技巧:翻译的14天JS编写技巧

写任何编程代码,不同的开发者都会有不同的见解.但参考一下总是好的,下面是来自 Javascript Toolbox 发布的 14条最佳JS代码编写技巧 ,Sofish翻译(1,2). 1. 总是使用 'var' 在JavaScript中,变量不是全局范围的就是函数范围的,使用"var"关键词将是保持变量简洁明了的关键.当声明一个或者是全局或者是函数级(function-level)的变量,需总是前置"var"关键词,下面的例子将强调不这样做潜在的问题. 不使用 Va

6个编写优质干净代码的技巧

[译者注]作为一名开发者,编写一手干净的代码很重要,所以在本文中作者先列举出编写干净代码的一些好处,再提出6个技巧用于编写干净代码,供开发者进行参考学习. 以下为译文: 编写干净的代码并不是一件容易的事情,这需要尝试不同的技巧和实践.问题是,在这个问题上有太多的实践和技巧,因此开发人员很难进行选择,所以要把这个问题简化一下.在本文中,将首先讨论编写干净代码的一些好处,然后将讨论6个技巧或者实践,用于编写最常用的干净代码. 以下是目录内容: 引用 编写干净代码的好处 更容易开始和继续一个项目 有利

VS开发中的代码编写小技巧&amp;mdash;&amp;mdash;避免重复代码编写的几种方法

原文:VS开发中的代码编写小技巧--避免重复代码编写的几种方法 上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中,我们经常会遇到大量重复或者类似的代码需要编写,当然我们可以通过各种模式来避免这种情况出现,但肯定有些时候我们是无法避免的,那么遇到这种情况,我们该如何快速完成这些重复或类似的代码的编写呢.下面来说一下我的方法,当然,如果大家有更好的方法

JAVASCRIPT代码编写俄罗斯方块网页版_javascript技巧

俄罗斯方块方块是小时候的一个回忆,从最开始的掌上的黑白游戏机,到电视游戏机,到电脑,无不有它的痕迹,今天我们来一起重温它的一种实现方法,也算是整理一下我的思路吧...... HTML+CSS+JS实现俄罗斯方块完整版,素材只有图片,想要的下载图片按提示名字保存,css中用的时候注意路径!!主要在JS中!JS附有详细注释 效果: 按键提示:[键盘按键] 素材:图片名字与代码里对应 1.背景图片:tetris.png 2.失败时候的弹出框图片:game-over.png 3.七种色彩小方块图片: