엑셀관련

엑셀 VBA 코딩시 매크로 속도를 올리는 방법

오빠좀데려가라 2014. 3. 19. 15:31

매크로를 빠르게 돌게(성능개선)하기위해...

VBA 코드를 최적화하는 코딩 방법 입니다.

1. 로직을 심플하게 분석


2. 화면에 실행상태 안보이게하기

Application.ScreenUpdating = False


 3. `계산옵션` 수동

Application.Calculation = xlCalculationManual


4. 이벤트 중지

Application.EnableEvents = False

 

5. `페이지 나누기` 를 하지 말기. `페이지 나누기 미리보기`도 기본으로 하기.

ActiveSheet.DisplayPageBreaks = False

 

6. With ~ End With

 

7. "" 대신 vbNullString


8. 개체변수의 메모리 반환: Set objX = Nothing


9. 콜론(:)을 이용하여 줄 수, 줄이기

   With Selection
        .WrapText = True
        .ShrinkToFit = False
    End With

보다는

    With Selection
        .WrapText = True: .ShrinkToFit = False
    End With


10. 고정값은 상수화(Const) 하기

Dim Pi As Double
Pi = 3.14159

보다는

Const Pi As Double = 3.141592


11. 불필요한 `복사 붙여넣기` 피하기
Sheet1.Range("A1:A200").Copy
Sheet2.Range("B1").PasteSpecial
Application.CutCopyMode = False
보다는
Sheet1.Range("A1:A200").Copy Sheet2.Range("B1")

 

12. 붙여넣기 후, 클립보드 지우기 (Application.CutCopyMode = False)


13. 매크로 기록기로 생성된 코드같은 스타일로 코딩하지 말기
Range("A1").Select
Selection.Interior.Color = vbRed
보다는
Range("A1").Interior.Color = vbRed

 

14. Late Binding(CreateObject를 이용한 개체 참조) 보다는 Early Binding(초기 개체 참조) 사용

Dim objWod As Object
Set objWod = CreateObject("Word.Application")
보다는

Dim objWod As New Word.Application

 


15. Variant 사용자제

Dim n As Variant

보다는

Dim n As Long

 

Dim c As Object

보다는

Dim c As Range

 


16. 가능한 반복문보다는 워크시트함수 이용 (Application.WorksheetFunction)

mProduct = 1
For i = 5 To 10
   mProduct = mProduct * Cells(3, i)
Next
보다는
mProduct = Application.WorksheetFunction.Product(Range("C5:C10"))

 

출처 :