VBA执行速度和效率

本文介绍了提高VBA执行效率的多种方法,包括关闭屏幕刷新、禁用自动计算、关闭警告提示、禁用分页符、避免选择和激活对象、使用.Value2读取数据等。通过这些技巧,可以显著提升VBA代码在处理大量数据时的运行速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

屏幕刷新:

如果我们不需要看见代码执行过程数据变化,可以在代码开始初关闭屏幕更新

'关闭屏幕更新
Application.ScreenUpdating = False
'恢复屏幕更新
Application.ScreenUpdating = True 


自动计算

如果工作表有很多函数,在代码运行过程中,关闭公式计算可以显著提升运行速度。

'手动重算
Application.Calculation = xlCalculationManual

'计算这个工作簿
calculate

'计算当前工作表
activesheet.calculate

'自动重算
Application.Calculation = xlCalculationAutomatic 


警告提示

有些时候,我们不希望代码运行过程中莫名弹出一些警告提示,可以设置False关闭提示信息。

'关闭提示
Application.DisplayAlerts = False 

'恢复提示
Application.DisplayAlerts = True 


关闭状态栏

Application.DisplayStatusBar 关闭状态栏。 如果将 Application.DisplayStatusBar 设置为 False,Excel 将不显示状态栏。 状态栏设置与屏幕更新设置是分开的,这样即使屏幕没有更新,也可以显示当前操作的状态。 但是,如果不需要显示每个操作的状态,在代码运行时关闭状态栏也可以提高性能。

禁用分页符

ActiveSheet.DisplayPageBreaks 禁用分页符。 如果将 ActiveSheet.DisplayPageBreaks 设置为 False,Excel 将不显示分页符。 不需要在代码运行时重新计算分页符,并且在代码执行后计算分页符可以提高性能。

事件关闭:

如果代码在运行过程中,我们不需要事件触发,可以关闭事件,避免工作簿中事件频繁触发,影响处理效率。

'关闭事件
Application.EnableEvents = False	

'启动事件
Application.EnableEvents = True


读取数据时使用 .Value2

从 Excel 区域读取数据时使用 .Value2 而不是 .Value 或 .Text
.Text 返回单元格的格式化值。 速度较慢,如果用户缩放,可能返回 ###,并可能丢失精度。
.Value 在区域被格式化为日期或货币的情况下,返回 VBA 货币变量或 VBA 日期变量。 速度较慢,可能会丢失精度,并且在调用工作表函数时可能导致错误。.Value2 速度快,不会改变正在从 Excel 检索的数据。

避免选择并激活对象

选择和激活对象的处理过程比直接引用对象更为密集。 通过直接引用 Range 或 Shape 等对象,可以提高性能。

使用单行语句进行複制和粘贴

Range(“E14”).Select
Selection.Copy
Range(“F14:G14”).Select
Activesheet.Paste
'改成*************
Range(“E14”).Copy Destination :=Range(“F14:G14”)

其他优化

通过将数组直接分配给 Range 来返回结果。
使用显式类型声明变量,以避免在代码执行期间确定数据类型的开销(可能在一个循环中进行多次)。
对于在代码中频繁使用的简单函数,请自己在 VBA 中实现这些函数而不是使用 WorksheetFunction 对象。
使用 Range.SpecialCells 方法缩小与代码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值