01
.Value或.Text或.Value2
.Text 返回单元格的格式化值。速度较慢,如果用户缩放,可能返回 ###,并可能丢失精度。
.Value 在区域被格式化为日期或货币的情况下,返回 VBA 货币变量或 VBA 日期变量。速度较慢,可能会丢失精度,并且在调用工作表函数时可能导致错误。
.Value2 速度快,不会改变正在从 Excel 检索的数据。
02
避免选择并激活对象
选择和激活对象的处理过程比直接引用对象更为密集。通过直接引用 Range 或 Shape 等对象,可以提高性能。下面的代码示例比较了这两种方法。
以下代码示例显示未优化的代码,它选择活动工作表中的每个形状并将文本更改为“Hello”。
For i = 0 To ActiveSheet.Shapes.Count ActiveSheet.Shapes(i).Select Selection.Text = "Hello" Next i
以下代码示例显示优化后的代码,它直接引用每个形状并将文本更改为“Hello”。
For i = 0 To ActiveSheet.Shapes.Count ActiveSheet.Shapes(i).TextEffect.Text = "Hello" Next i
03
额外性能优化
通过将数组直接分配给 Range 来返回结果。
使用显式类型声明变量,以避免在代码执行期间确定数据类型的开销(可能在一个循环中进行多次)。
对于在代码中频繁使用的简单函数,请自己在 VBA 中实现这些函数而不是使用 WorksheetFunction 对象。
使用 Range.SpecialCells 方法缩小与代码交互的单元格数量。
04
文件格式与性能
与早期版本相比,从 Excel 2007 开始,Excel 包含各种各样的文件格式。忽略宏、模板、加载项、PDF 和 XPS 文件格式变体,三种主要格式是 XLS、XLSB 和 XLSX。
XLS 格式
XLS 格式与早期版本的格式相同。使用这种格式时,限制为 256 列和 65,536 行。当你以 XLS 格式保存 Excel 2007 或 Excel 2010 工作簿时,Excel 将运行兼容性检查。文件大小几乎与早期版本相同(可能会存储一些其他信息),性能略慢于早期版本。Excel 按照单元格计算顺序执行的任何多线程优化都不会以 XLS 格式保存。因此,在以 XLS 格式保存工作簿、关闭和重新打开工作簿之后,工作簿的计算速度可能会变慢。
XLSB 格式
XLSB 是在 Excel 2007 中引入的二进制格式。它的结构是一个包含许多二进制文件的压缩文件夹。它比 XLS 格式紧凑得多,但压缩量取决于工作簿的内容。例如,10 个工作簿显示从 2 到 8 的大小缩减系数,平均缩减系数为 4。从 Excel 2007 开始,打开和保存性能只比 XLS 格式稍慢。
XLSX 格式
XLSX 是 Excel 2007 中引入的 XML 格式,也是 Excel 2007 中开始采用的默认格式。XLSX 格式是一个包含许多 XML 文件的压缩文件夹(如果将文件扩展名更改为 .zip,则可以打开压缩文件夹并检查其内容)。通常,XLSX 格式创建的文件比 XLSB 格式的文件大(平均为 XLSB 格式的 1.5 倍),但它们仍明显小于 XLS 文件。打开和保存的时间应比 XLSB 文件稍微长一些。
05
打开/关闭/保存工作簿
你可能会发现打开、关闭和保存工作簿要比计算它们慢得多。有时这只是因为工作簿较大,但也可能有其他原因。
如果您的一个或多个工作簿的打开和关闭速度比正常速度慢,则可能是由以下问题之一导致的。
1.临时文件
临时文件可能堆积在你的 \Windows\临时目录中(在 Windows 95、Windows 98 和 Windows ME 中),或在\“文档和设置”\“用户名”\“本地设置”\临时目录中(在 Windows 2000 和 Windows XP 中)。Excel 为工作簿和打开的工作簿所使用的控件创建这些文件。软件安装程序也会创建临时文件。如果 Excel 因任何原因而停止响应,则可能需要删除这些文件。
临时文件太多可能会导致问题,因此应不时地清理它们。然而,如果安装的软件需要重启计算机,但尚未重启,则应该先重启再删除临时文件。
打开临时目录的一种简单的方法是从 Windows“开始”菜单打开:单击“开始”,然后单击“运行”。在文本框中,键入 %temp%,然后单击“确定”。
2.跟踪共享工作簿中的更改
跟踪共享工作簿中的更改会导致工作簿文件大小迅速增加。
3.零碎的交换文件
确保您的 Windows 交换文件所在的磁盘具有大量空间并且定期整理磁盘碎片。
4.具有密码保护结构的工作簿
与不受可选密码保护的工作簿相比,结构受密码保护(“工具”菜单>“保护” > “保护工作簿”>输入可选密码)的工作簿的打开和关闭速度要慢得多。
5.已用区域问题
过大的已用区域可能会导致打开速度变慢以及文件大小增加,在由具有非标准高度或宽度的隐藏行或列导致已用区域过大时尤其如此。有关已用区域问题的详细信息,请参阅最大程度地减小已用区域。
6.工作表上的大量控件
工作表上的大量控件(复选框、超链接等)可能会减慢打开工作簿的速度,因为使用的临时文件数量太多。这还可能导致在 WAN(甚至 LAN)上打开或保存工作簿出现问题。如果遇到此问题,应考虑重新设计工作簿。
7.大量指向其他工作簿的链接
如果可能,在打开包含链接的工作簿之前,先打开要链接的工作簿。通常,打开工作簿比从关闭的工作簿中读取链接要快。
8.病毒扫描程序设置
某些病毒扫描仪设置可能会导致打开、关闭或保存问题或速度变慢,特别是在服务器上。如果你认为这可能是问题所在,请尝试暂时关闭病毒扫描程序。
9.计算缓慢导致打开和保存缓慢
某些情况下,Excel 会在打开或保存工作簿时对其进行重新计算。如果工作簿的计算时间很长并导致问题,请确保将计算设置为“手动”,并在保存 选项之前考虑关闭 计算(“工具” > “选项” > “计算”)。
10.工具栏文件 (.xlb)
检查工具栏文件的大小。一个的典型工具栏文件在 10 KB 和 20 KB 之间。可以通过使用 Windows Search 搜索 *.xlb 来找到 XLB 文件。每个用户都有唯一的 XLB 文件。添加、更改或自定义工具栏会增加 toolbar.xlb 文件的大小。删除该文件将删除所有工具栏自定义项(将其重命名为“toolbar.OLD”更安全)。下次打开 Excel 时将创建一个新的 XLB 文件。