vba - 在 Excel 2003 vba 中插入新行非常慢

标签 vba excel excel-2003

我是 vba 新手 - 我实际上只学了 3 天。

无论如何,我有一些表单可以从用户那里获取一些数据,然后将它们写入单独的“日志”表的顶行。我正在使用这个:

With Worksheets("Log")
    .Unprotect
    .Range("A2").EntireRow.Insert Shift:=xlDown
    .Range("A2") = varToken
    .Range("B2") = varAction
    .Range("C2") = varLocation
    .Range("D2") = varTracking
    .Range("E2") = Date
    .Range("F2") = Time
    .Range("G2") = varPerson
    .Range("H2") = varOverride
    .Protect
End With

问题是,它会在日志表上滑动半秒,然后需要很长时间才能写入。

我将其写入日志顶行的原因是,我使用 100 个 varToken vlookups(有 100 个不同的标记要查找)在首页上汇总了数据,其中找到了第一个(即顶部)日志表中的条目。

如果更快的话,我可以写入日志表的底部,但随后我需要一个代码来替换 100 个 vlookups,这些 vlookups 将在潜在的数千行中查找最后一次提及的标记,并将运行快点!

提前致谢!

最佳答案

我相信您的Vlookups正在减慢该过程,因为每次写入单元格时它们都会重新计算。试试这个

With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With

With Worksheets("Log")
    .Unprotect
    .Range("A2").EntireRow.Insert Shift:=xlDown
    .Range("A2") = varToken
    .Range("B2") = varAction
    .Range("C2") = varLocation
    .Range("D2") = varTracking
    .Range("E2") = Date
    .Range("F2") = Time
    .Range("G2") = varPerson
    .Range("H2") = varOverride
    .Protect
End With

With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With

关于vba - 在 Excel 2003 vba 中插入新行非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317825/

相关文章:

vba - 根据单元格内容进行搜索

vba - Excel Shape.TextFrame.Characters.Insert 在 Excel 2007 上是否损坏?

android - Java中如何判断Excel文件的格式?

excel - 验证还是不验证?

excel-2007 - office2003兼容包安装了吗?

vba - 使用 VBA 将文本添加到 Excel 中的单元格

arrays - 最佳实践 VBA : boolean return values on non-boolean function

excel - 用于学习 Excel 中的 VBA 编程的资源(针对完整的编程新手)

excel - Excel 2007 中的 Application.InputBox 方法

string - Excel VBA 对大型文档进行字符串操作导致运行时错误 "1004"