返回列表 上一主題 發帖

[發問] 巨集執行愈來愈慢?

[發問] 巨集執行愈來愈慢?

小弟有一個排程的巨集,之前也是請教這裡的高手stillfish00協助解決的
不知道是不是電腦老舊還是資料量過大,使用一段時間之後這一段愈跑愈慢 ( 用公司的NB跑將近6~7分鐘 )
想請教各位高手是否有加速的方法,或者其實是因為其他部分我自行錄製拼湊出來的段落影響所以才會愈來愈慢?

ESOD_XT_AA.rar (472.05 KB)

            Dim s1 As Long, s2 As Long
            Dim cindex As Long
            With Sheets("出貨日")
            Set Rng = .Range(.[a1], .[a1].End(xlToRight).End(xlDown).Offset(, -1))  '[出貨日]資料範圍
            End With
            For Each c In Sheets("交期").Range("E2:E" & Sheets("交期").[a1].End(xlDown).Row)  '[交期]資料填入範圍
            If c.Offset(, -4).Value <> c.Offset(-1, -4).Value Then
                cindex = 1
                s1 = 0  '累積至前一批數量
                s2 = 0  '累積出貨需求數量
            Else
                s1 = s1 + c.Offset(-1, -1).Value
            End If
            Do While s2 <= s1
                cindex = cindex + 1
                If Application.IsError(Application.VLookup(c.Offset(, -4).Value, Rng, cindex, False)) Then
                    Exit Do
                Else
                    s2 = s2 + Application.VLookup(c.Offset(, -4).Value, Rng, cindex, False)
                End If
            Loop
            If s2 <= s1 Then
                c.Value = "NA"
            Else
                c.Value = Rng.Cells(1, cindex).Value
            End If
            Next
            Set Rng = Nothing
    '在E欄填入交期
Adam

回復 3# r1145kimo

r1145kimo大,感謝您的回復,放上去之後真得快了很多
是所有的迴圈函數都可以用嗎?
那可不可以一開始執行巨集就關閉,最後執行完畢存檔之前再打開?
Adam

TOP

回復 4# stillfish00


   
Dear stillfish00大,就是跑附檔的資料(一千多筆)而已
之前H大提供的語法,出現錯誤在第七行的地方
Set rng = a.EntireRow.SpecialCells(xlCellTypeConstants, xlNumbers) '應交貨數量
因為不太懂語法,實在找不出哪裡有問題所以就沒有使用了
而一開始您所提供的迴圈執行也蠻快的,所以就這樣使用,
可能是我後來又陸續錄製一些新增的功能影響了這一段迴圈的執行速度
剛才聽r1145kimo大的建議已經快很多了,再次感謝您出手相助~
Adam

TOP

回復 5# 准提部林


          感謝 准提部林大提供的建議 & Sample
因為不太懂語法,所以先求加速一點即可不敢大肆修改
但是您提供的範例也帶給我其他工作的一些新想法,謝謝您~
Adam

TOP

        靜思自在 : 好事要提得起,是非要放得下,成就別人即是成就自己。
返回列表 上一主題