2016-11-29 66 views
0

我的宏的一部分使用修剪功能。它恰好是我的宏的最慢的部分,我正在加速它。有人有一些代码可以达到相同的目的,但更快的建议吗?如何加快修剪宏

Sub Trim() 

For Each c In Sheets("Approved Closing Data Draw").UsedRange c.Value = WorksheetFunction.Trim(c.Value) Next c 

For Each c In Sheets("Pipeline - Underwriting Data D").UsedRange c.Value = WorksheetFunction.Trim(c.Value) Next c 

For Each c In Sheets("Modifications").UsedRange c.Value = WorksheetFunction.Trim(c.Value) Next c 

For Each c In Sheets("Lead Data").UsedRange c.Value = WorksheetFunction.Trim(c.Value) Next c 

Sheets("Approved Closing Data Draw").Select 

End Sub 
+1

这看起来更像是一个代码审查的问题... HTTP://codereview.stackexchange .COM / – Rdster

回答

0

这应该是更快:

Sub DoSheets() 
    TrimUsedRange Sheets("Approved Closing Data Draw") 
    TrimUsedRange Sheets("Pipeline - Underwriting Data D") 
    'etc 
End Sub 

Sub TrimUsedRange(sht As Worksheet) 
    Dim d, r As Long, c As Long 

    With sht.UsedRange 
     If .CountLarge = 1 Then 
      'handle empty sheets 
      .Value = WorksheetFunction.Trim(.Value) 
     Else 
      d = .Value 
      For r = 1 To UBound(d, 1) 
      For c = 1 To UBound(d, 2) 
       d(r, c) = WorksheetFunction.Trim(d(r, c)) 
      Next c 
      Next r 
      .Value = d 
     End If 
    End With 
End Sub 

只需使用Trim()可能会快于WorksheetFunction.Trim()