寰俊瀹㈡湇
锛憋急瀹㈡湇
鏀粯瀹濆鏈
鐢佃瘽瀹㈡湇
鍒嗕韩

PMC资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2945|回复: 0

编写高效Excel VBA代码的最佳实践 PDF 31页

[复制链接]

6168

主题

540

回帖

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22837
QQ
发表于 2013-1-31 16:00:41 | 显示全部楼层 |阅读模式
很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快。下面搜集了一些使Excel VBA代码运行更快的技术和技巧,基本上都是实践经验的总结。如果您还有其它优化Excel VBA代码的方法,可以在本文后留言或给出链接,与大家分享。
对于应用程序属性,在代码运行时关闭除必需属性以外的其它所有属性
在代码运行时关闭不需要的Excel功能。其原因是,如果通过VBA更新不同的单元格区域,或者从不同的单元格区域复制 /粘贴来创建汇总表,则不希望Excel浪费时间和资源来重新计算公式、显示粘贴进度或者重绘网格,尤其在每次单独的操作后(更有甚者,如果代码使用了循环,则每次单独操作后Excel都会在后台运行这些功能)。只需要在代码执行结束时进行一次重新计算和重绘就足以使工作簿更新。
下面的代码将帮助您提高代码的执行速度。
(1)放置在主代码前的一段代码,获取Excel当前的属性状态,然后将其关闭
'获得当前的Excel设置状态,将其放置在代码的开头
screenUpdateState = Application.ScreenUpdating
statusBarState = Application.DisplayStatusBar
calcState = Application.Calculation
eventsState = Application.EnableEvents
displayPageBreakState = ActiveSheet.DisplayPageBreaks '注:这是工作表级的设置'关闭一些Excel功能使代码运行更快
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False '注:这是工作表级的设置
(2)放置在主代码结束后的一段代码,用来将Excel恢复到代码运行前的设置'代码运行后,恢复Excel原来的状态;将下面的代码放在代码的末尾
Application.ScreenUpdating = screenUpdateState
Application.DisplayStatusBar = statusBarState
Application.Calculation = calcState
Application.EnableEvents = eventsState
ActiveSheet.DisplayPageBreaks = displayPageBreaksState '注:这是工作表级的设置
下面简要解释这些设置:
Application.ScreenUpdating:将该属性设置为False,告诉Excel不要重绘屏幕。其优点是不需要Excel花费资源来绘制屏幕,因而其改变会更快而不致让用户察觉其变化。因为如此频繁地绘制屏幕需要大量的资源,所以关闭绘制屏幕直到代码执行结束。在代码结束前,确保重新开启了该属性。
Application.DisplayStatusBar:将该属性设置为False,告诉Excel停止显示状态栏。例如,如果使用VBA复制/粘贴单元格,当粘贴执行时Excel将在状态栏中显示操作的进度。关闭屏幕更新不会关闭状态栏显示,因此,如果需要的话,可以禁用屏幕更新而仍然可以通过状态栏给用户提供反馈。记住,如果将该属性设置为False,在代码结束前应该将其设置为True。
Application.Calculation:该属性允许编程设置Excel的计算模式。“手工的”(xlCalculationManual)模式意味着Excel等待用户(或代码)来触发计算;默认为“自动的”(xlCalculationAutomatic)模式,意味着由Excel来决定何时重新计算工作簿(例如,当在工作表中输入新公式时)。由于重新计算工作簿将花费时间且浪费资源,因此可能不希望每次改变单元格值时Excel都触发重新计算。当代码执行时关闭重新计算,在代码结束前再设置回重新计算模式。
Application.EnableEvents:将该属性设置为False,告诉Excel不要触发事件。你可能不希望Excel为每个正在通过代码发生改变的单元格触发事件,关闭事件将加速VBA代码的执行。
......

本帖中子包含更多资源,需VIP会员才可浏览,点击自动升级为VIP会员

您需要 登录 才可以下载或查看,没有账号?立即注册

x
会赚钱的人用钱买时间,不会赚钱的人用时间换钱;
主动学习,提升自己,战胜对手,梦想才能变为现实!

版权声明:

1、在本站内发表的内容仅代表作者本人观点,与本网站立场无关。

2、转载或引用本网站中的署名文章,请按规定向原作者获得授权。

3、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任。

4、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利。

5、免责声明:PMC资源网所发布的一切文章和资料仅限用于学习和研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢或需要该内容,请联系作者,购买授权,得到更好的服务。如有侵权请邮件与我们联系处理(邮件地址:admin@pmczy.com)。

关闭

站长推荐上一条 /2 下一条

工厂管理秘籍


QQ|手机版|PMC资源网 ( 本站部分资源来自网络,仅供个人学习,如侵犯了您的权益,请联系我们删除(admin@pmczy.com) 。蜀ICP备14016815号-2 )

GMT+8, 2024-5-4 06:11 , Processed in 0.069478 second(s), 29 queries .

Powered by Discuz! X3.4

© 2007-2024 PMCZY.COM

快速回复 返回顶部 返回列表