2016-03-02 83 views
1

我以前录制宏函数来创建此,但它运行很慢,我想看看是否有人对如何清理任何想法。看起来好像我在这里做两件事情做同样的事情?提前致谢。清理代码宏

Sub Activations() 
' 
' Master_Button2_2_Click Macro 
' 

' 
Application.ScreenUpdating = False 
Sheets("Index").Select 
Columns("A:C").Select 
ActiveWorkbook.Worksheets("Index").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("Index").Sort.SortFields.Add Key:=Range("B2:B12000" _ 
    ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
With ActiveWorkbook.Worksheets("Index").Sort 
    .SetRange Range("A1:C12000") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
Sheets("Duplicates").Select 
ActiveSheet.Range("$L$4:$N$3476").AutoFilter Field:=1, Criteria1:= _ 
    "Activate" 
Sheets("Master").Select 
ActiveSheet.Range("$A$2:$BU$11965").AutoFilter Field:=73, Criteria1:= _ 
    "A" 
Application.ScreenUpdating = True 
End Sub 

回答

0

你的代码是相当简单的,尽管它不完全清楚它试图完成什么。这是一个快速重写,把几个With ... End With statement用来缩小受影响的工作区域。

Sub Activations() 
    ' Master_Button2_2_Click Macro 
    Dim lr As Long 

    appTGGL bTGGL:=False 

    With Worksheets("Index") 
     lr = .Cells.SpecialCells(xlCellTypeLastCell).Row 
     With .Range("A1:C" & lr) 
     .Cells.Sort Key1:=.Columns(2), Order1:=xlAscending, _ 
        Orientation:=xlTopToBottom, Header:=xlYes 
     End With 
    End With 

    With Worksheets("Duplicates") 
     If .AutoFilterMode Then .AutoFilterMode = False 
     lr = .Cells.SpecialCells(xlCellTypeLastCell).Row 
     With .Range("L4:N" & lr) 
      .AutoFilter Field:=1, Criteria1:="activate" 
     End With 
    End With 

    With Worksheets("Master") 
     If .AutoFilterMode Then .AutoFilterMode = False 
     lr = .Cells.SpecialCells(xlCellTypeLastCell).Row 
     With .Range("A2:BU" & lr) 
      .AutoFilter Field:=73, Criteria1:="A" 
     End With 
     .Select 
    End With 

    appTGGL 
End Sub 

Sub appTGGL(Optional bTGGL As Boolean = True) 
    With Application 
     .EnableEvents = bTGGL 
     .ScreenUpdating = bTGGL 
     .DisplayAlerts = bTGGL 
     .Calculation = IIf(bTGGL, xlCalculationAutomatic, xlCalculationManual) 
    End With 
End Sub 

样本数据和说明的简要叙述会帮助这个问题。我们并不都讲英文,但我们都会讲代码和数据。