2014-10-23 3 views
0

시스템 보고서를 다운로드 할 때 chr()의 형식을 지정하거나 해제 할 수있는 전역 매크로를 개발하려고합니다. 거기에 이미 가지고있는 것보다 더 빠른 방법이 있습니까? 이 보고서 중 일부는 20 개 이상의 열과 25K 행 이상일 수 있으므로 각 셀을 반복하지 않도록하십시오.스프레드 시트의 모든 셀에 자르기 적용 (대체 ...)

Sub test123() 
Application.ScreenUpdating = False 

Dim rng1 As Range 
Set rng1 = Application.ActiveSheet.UsedRange 


Dim r As Range 

On Error Resume Next 
    For Each r In rng1 
     r.Value = Trim(Replace(r.Value, Chr(160), Chr(32))) 
    Next 
Application.ScreenUpdating = True 
End Sub 

답변

2
Sub Tester() 

Dim t, cell As Range, rng As Range, arr 
Dim nR As Long, nC As Long, r As Long, c As Long 

    Set rng = Range("A1").Resize(10000, 20) 

    '###### update cell-by-cell ###### 
    t = Timer 
    Application.ScreenUpdating = False 
    Application.Calculation = xlCalculationManual '<< big speedup here... 
    For Each cell In rng.Cells 
     cell.Value = Replace(Trim(cell.Value), Chr(160), Chr(32)) 
    Next cell 
    Application.Calculation = xlCalculationAutomatic '<<...but don't forget to set back 
    Application.ScreenUpdating = True 

    Debug.Print Timer - t ' about 10sec 

    t = Timer 

    '###### read to array, update array, write to sheet ###### 
    arr = rng.Value 
    nR = UBound(arr, 1) 
    nC = UBound(arr, 2) 
    For r = 1 To nR 
    For c = 1 To nC 
     arr(r, c) = Replace(Trim(arr(r, c)), Chr(160), Chr(32)) 
    Next c 
    Next r 
    rng.Value = arr 

    Debug.Print Timer - t 'about 0.5 sec 

End Sub 
+0

감사합니다 팀. 지금 당장 응답하지 않으시면 사과드립니다. 나는 그 대답을 받아 들였다고 생각했다. 하단의 옵션에 대한 훌륭한 솔루션. 전에 "UBound"를 사용한 적이 없습니다. 배열을 이해하기 위해 그것에 대해 읽을 것입니다. – fonzy16

관련 문제