我一直在使用这个网站,这对我来说非常有用。首先,我要感谢所有贡献者。但是我遇到了一个问题,无法找到解决方案。
我不是专业的程序员或程序员,我只使用excel VBA来改进我们在工作中使用的一些报告工具。这就是为什么我可能做了非常基本的错误,请不要恨我:)。
所以,我正在尝试创建基本库存跟进工具,该工具将在主表(Followup 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
答案 0 :(得分:0)
我已经设法在发布后立即解决了我的问题,这表明我之前没有努力:),所以简单地切换到手动计算解决了慢速运行问题。这是新代码。
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