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