我是 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/