for 循环中的慢 .value 函数
Slow .value function within for loop
我已经使用这个网站一段时间了,它对我来说真的很有用。首先,我要为此感谢所有贡献者。但是我遇到了一个问题,找不到解决方案。
我不是专业的编码员或程序员,我只是使用 excel VBA 来改进我们在工作中使用的一些报告工具。这就是为什么我可能犯了非常基本的错误,请不要恨我:)
所以,我正在尝试创建基本的库存跟进工具,它将在主要 sheet(跟进 Sheet)中包含一些零件号,并且负责的每一天都会粘贴传入 sheet(WebDOS Pivot)的一些值,我计划使用我的宏在现有部件中查找传入部件号,如果存在,则将传入值输入相关单元格。
我的 .find 函数运行良好,但是当我添加代码以将值复制到相关单元格宏时,开始变得 运行 非常慢。你们知道我做错了什么,或者我怎样才能提高这段代码的性能?提前谢谢你。
Dim WebDOSLastRow As Long
Dim WDS As Worksheet
Dim FUS As Worksheet
Dim PUS As Worksheet
Dim SearchResult As Range
Set WDS = Sheets("WebDOS Pivot")
Set FUS = Sheets("Followup Sheet")
Set PUS = Sheets("Part Usage Pivot")
WebDOSLastRow = WDS.Range("A3").End(xlDown).Row
For i = 5 To WebDOSLastRow - 1
With FUS.Range("E:E")
Set SearchResult = .Find(What:=WDS.Range("A" & i).Value, _
After:=Range("E5"), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not SearchResult Is Nothing Then
FUS.Range("K" & SearchResult.Row).Value = WDS.Range("C" & i).Value + FUS.Range("K" & SearchResult.Row).Value
Else
'Coding Will Come Here for not found items
End If
End With
Application.StatusBar = "Searching " & i & "/" & WebDOSLastRow
Next
Application.StatusBar = False
End Sub
我发帖后就解决了我的问题,这说明我之前没有努力:),所以简单地切换到手动计算解决了慢运行的问题。这是新代码。
WebDOSLastRow = WDS.Range("A3").End(xlDown).Row
Application.Calculation = xlCalculationManual '<---- Switching to manual calculation
For i = 5 To WebDOSLastRow - 1
With FUS.Range("E:E")
Set SearchResult = .Find(What:=WDS.Range("A" & i).Value, _
After:=Range("E5"), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not SearchResult Is Nothing Then
FUS.Range("K" & SearchResult.Row).Value = WDS.Range("C" & i).Value + FUS.Range("K" & SearchResult.Row).Value
Else
'Coding Will Come Here for not found items
End If
End With
Application.StatusBar = "Searching " & i & "/" & WebDOSLastRow
Next
Application.StatusBar = False
Application.Calculation = xlCalculationAutomatic
我已经使用这个网站一段时间了,它对我来说真的很有用。首先,我要为此感谢所有贡献者。但是我遇到了一个问题,找不到解决方案。
我不是专业的编码员或程序员,我只是使用 excel VBA 来改进我们在工作中使用的一些报告工具。这就是为什么我可能犯了非常基本的错误,请不要恨我:)
所以,我正在尝试创建基本的库存跟进工具,它将在主要 sheet(跟进 Sheet)中包含一些零件号,并且负责的每一天都会粘贴传入 sheet(WebDOS Pivot)的一些值,我计划使用我的宏在现有部件中查找传入部件号,如果存在,则将传入值输入相关单元格。
我的 .find 函数运行良好,但是当我添加代码以将值复制到相关单元格宏时,开始变得 运行 非常慢。你们知道我做错了什么,或者我怎样才能提高这段代码的性能?提前谢谢你。
Dim WebDOSLastRow As Long
Dim WDS As Worksheet
Dim FUS As Worksheet
Dim PUS As Worksheet
Dim SearchResult As Range
Set WDS = Sheets("WebDOS Pivot")
Set FUS = Sheets("Followup Sheet")
Set PUS = Sheets("Part Usage Pivot")
WebDOSLastRow = WDS.Range("A3").End(xlDown).Row
For i = 5 To WebDOSLastRow - 1
With FUS.Range("E:E")
Set SearchResult = .Find(What:=WDS.Range("A" & i).Value, _
After:=Range("E5"), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not SearchResult Is Nothing Then
FUS.Range("K" & SearchResult.Row).Value = WDS.Range("C" & i).Value + FUS.Range("K" & SearchResult.Row).Value
Else
'Coding Will Come Here for not found items
End If
End With
Application.StatusBar = "Searching " & i & "/" & WebDOSLastRow
Next
Application.StatusBar = False
End Sub
我发帖后就解决了我的问题,这说明我之前没有努力:),所以简单地切换到手动计算解决了慢运行的问题。这是新代码。
WebDOSLastRow = WDS.Range("A3").End(xlDown).Row
Application.Calculation = xlCalculationManual '<---- Switching to manual calculation
For i = 5 To WebDOSLastRow - 1
With FUS.Range("E:E")
Set SearchResult = .Find(What:=WDS.Range("A" & i).Value, _
After:=Range("E5"), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not SearchResult Is Nothing Then
FUS.Range("K" & SearchResult.Row).Value = WDS.Range("C" & i).Value + FUS.Range("K" & SearchResult.Row).Value
Else
'Coding Will Come Here for not found items
End If
End With
Application.StatusBar = "Searching " & i & "/" & WebDOSLastRow
Next
Application.StatusBar = False
Application.Calculation = xlCalculationAutomatic