返回列表 上一主題 發帖

分割工作表range放變數進去後執行速度變慢

分割工作表range放變數進去後執行速度變慢

大家好,想請教在指定工作表裡range使用變數時,執行的速度不知為何變得非常慢,連帶刪除工作表時也顯得卡卡的;
但如果改成指定範圍速度就很快,但資料不一定每次都一樣多列,想知道有沒有加快運行的方法,非常感謝~

下列這些容易拖慢excel的功能也都試過,執行起來一樣很慢...

    Application.Calculation = xlCalculationManual  '暫停公式自動計算
    Application.ScreenUpdating = False  '暫停畫面更新
    Application.DisplayStatusBar = False '暫停狀態列更新
    Application.EnableEvents = False  '暫停事件處理
    Application.Interactive = False  '暫停交互模式

我的檔案:[attach]31643[/attach]

糟糕我不會上傳附件
分割工作表range放變數執行速度變慢.rar (25.74 KB)


Public Sub 批次分割工作表()
    '複製業務到Z欄
    Columns("A:A").Copy
    Columns("Z:Z").Insert shift:=xlToRight

    '移除重複
    ActiveSheet.Range("Z:Z").RemoveDuplicates Columns:=1, Header:=xlYes

   
    '新增工作表
    For i = 2 To Range("Z1").End(xlDown).Row
        Sheets.Add after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = Sheets(1).Cells(i, "Z")
        
        '不知為何range丟變數進去執行速度變很慢
'        r = Range("A1").End(xlDown).Row
'        Sheets(1).Range("A1:U" & r).AutoFilter field:=1, Criteria1:=Sheets(1).Cells(i, "Z") '篩選這個功能是在Range物件底下的方法
'        Sheets(1).Range("A1:U" & r).Copy Range("A1")
        
        
        '直接指定範圍運行速度就很快
        Sheets(1).Range("A1:U14").AutoFilter field:=1, Criteria1:=Sheets(1).Cells(i, "Z") '篩選這個功能是在Range物件底下的方法
        Sheets(1).Range("A1:U14").Copy Range("A1")
    Next
   
    Sheets(1).Select
    Columns("Z").Delete
    Sheets(1).Range("A1:U14").AutoFilter
   
End Sub

TOP

回復 3# jcchiang


    我理解了,非常感謝說明與指導~

TOP

回復 5# 准提部林


    謝謝版主提供∼好顛覆我的腦袋,菜鳥我需要仔細推敲,再次感謝版主∼

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題