提升VBA运行速度

屏幕刷新:

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

'关闭屏幕更新
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 等对象,可以提高性能。

其他优化

  1. 通过将数组直接分配给 Range 来返回结果。
  2. 使用显式类型声明变量,以避免在代码执行期间确定数据类型的开销(可能在一个循环中进行多次)。
  3. 对于在代码中频繁使用的简单函数,请自己在 VBA 中实现这些函数而不是使用 WorksheetFunction 对象。
  4. 使用 Range.SpecialCells 方法缩小与代码交互的单元格数量。
  • 3
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值