我需要关于vba脚本,宏的建议。
因此,我有一个excel表,其中有3张表名为:Predujam,OSTATAK NAKNADE,vlookup
Predujam和OSTATAK NAKNADE包含从vlookup表中提取数据的vlookup/xlookup公式。
所有3张纸都包含4000行数据,列范围为A:Q。
对于sheet Predujam,我使用以下代码(这段代码应该只在发生更改的行中进行计算):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = ThisWorkbook.Sheets("PREDUJAM").Range("A2:O5000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Range("A" & Range(Target.Address).Row & ": O" & Range(Target.Address).Row).Calculate
End If
End Sub
对于工作表OSTATAK ,使用相同的代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = ThisWorkbook.Sheets("OSTATAK NAKNADE").Range("A2:O5000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Range("A" & Range(Target.Address).Row & ": O" & Range(Target.Address).Row).Calculate
End If
End Sub
在sheet vlookup中,我只使用以下代码来计算打开的工作表:
Private Sub Worksheet_Activate()
Worksheets("vlookup").Calculate
End Sub
在ThisWorkbook中,我插入了停止自动计算的代码:
Private Sub Workbook_Open()
Application.Calculation = xlManual
Application.CalculateBeforeSave = False
End Sub
基本上,我想停止所有的计算,并且只在发生更改的行中进行计算。
问题是:表仍然是滞后的,保存仍然需要20到30秒的时间来保存,在发生更改的行中进行计算也有一些延迟。
我的问题是:,我在代码中有一些可能导致落后的错误吗?如果有更好的方法来写这个,你能告诉我怎么重写吗?
我只是vba脚本的初学者,所以我需要一些建议。
谢谢!:D
发布于 2022-05-27 13:58:25
这不是一个恰当的答案,但是一个评论不能给我足够的空间来写这些.
作为使用VBA的人,您可能会欣赏变量的值,即
)。
用户界面中的辅助细胞虽然受到了很多的非议,但在这方面却等同于变量,即
我为什么要胡扯?假设您将工作簿计算设置为手动操作,那么您的文件显然要花费大量时间进行计算:如果您审核工作簿中的公式,那么您可能会发现至少有一些计算与几个公式相同--如果您将这些计算提取到指定的辅助单元格中,那么您可以通过只计算这些结果一次来提高性能,然后只从“旧公式”中引用这些结果,而不是在当前出现的每个公式中重复计算。
https://stackoverflow.com/questions/72403383
复制相似问题