gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:31:48 32 4
gpt4 key购买 nike

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

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com