티스토리 뷰


이번글에서는 설정한 매크로에 대해서 디버깅하는 방법과 코드 수정하는 방법에 대해서 알아보도록 하겠습니다. 

VBA나 매크로를 원활하게 사용하기 위한 프로그래밍의 가장 중요한 점은 디버깅입니다. 디버깅을 잘해야 원하는 결과물을 만들어 낼 수 있습니다. 


하지만 초급자 입장에서 디버깅을 하기가 쉽지는 않죠. 하지만 VBA는 엑셀 내부의 함수를 대부분 사용하기 때문에 관련 문법과 함수 사용법이 눈에 익기만 하면 다른 언어보다는 쉽습니다. 에러가 발생하는 이유도 제한적이기구요. 


추후에 디버깅을 하는 방법에 대해서 자세히 다뤄볼텐데요. 


이 글에서는 간단히 어떤식으로 코드가 흘러가는지를 보는 정도만 언급을 하도록 하겠습니다. 수정 부분도 간단히 할 겁니다. 

겁먹지마세요 ^_^ 궁금한 점이 있으시면 언제든 물어보시면 답변 드릴께요~!


그럼 먼저 매크로를 디버깅하는 방법에 대해서 알아보도록 하겠습니다. 지난 글에서 생성한 MacroTest.xlsm 파일을 한번 열어봅시다. 

아직 안보신분들은 아래의 링크를 참고해서 한번 만들어보자구요~!!



여기서 Run 버튼을 누르지마시고, Step Into를 한번 눌러봅니다. 



Step Into를 누르게 되면, VBE(Visual Basic Environments)가 활성화 되면서 개발 창이 뜨게됩니다. 그리곤 아래의 그림과 같이 노란색으로 코드 부분(Sub MacroTest() 부분)이 색칠되어 있습니다. 이렇게 설정된 것을 브레이크 포인트(Break Point)가 활성화 되었다고 합니다. 특정 코드에서 코드의 실행을 멈추게 해서 코드가 실행되면서 실질적으로 엑셀에서 어떠한 변화가 있는지를 확인할 수 있습니다.


디버깅을 잘하고자 하시면 에러를 유발시키는 적절한 코드에 브레이크 포인트를 걸어서 그 근처의 코드가 어떻게 수행되는지를 잘 파악하시면 됩니다.

물론 말은 쉽고, 행동하기는 어렵지만 조금만 더 노력하시면 익숙해지실 꺼에요.



다음 코드 라인을 한줄 한줄씩 실행시키기 위해서는 F8 단축키를 누를 수 있습니다. F8은 한단계씩 코드를 실행하게 도와줍니다. 물론 아래의 그림과 같이 Debug메뉴에서도 누를 수 있지만 귀차니즘이 많은 과정이므로 F8을 누릅니다.




그럼 다음 코드로 한번 넘어가보도록 하겠습니다. F8을 두번 누릅니다.

두번 누르게 되면 아래의 코드와 같이 노란색 박스가 이동을 하게 됩니다. 두번 눌렀으니 Sub 블라브라 코드와 Range("A1:B1").Select 코드가 실행이 된겁니다. 



위의 코드 상황에서 엑셀로 한번 돌아가봅시다. 정말로 A1부터 B8까지 선택되었는지 확인을 해야죠. 아래의 그림처럼 되어 있다면 디버깅에 대한 한단계씩 실행을 제대로 하셨습니다. 


정말로 A1부터 B8이 선택이 되었네요. 

여기까지 실행으로 우리는 Range(범위).Select를 하게 되면 범위의 영역만큼 사용자가 선택한 것 처럼 자동적으로 선택되는 것을 알 수 있게 되었습니다. 이렇게 실행을 시켜가면서 Excel VBA 함수를 어떻게 사용하는구나 파악할 수 있습니다. 



지금까지 간단히 디버깅을 하는 과정이 어떻게 진행되는지 살펴보았습니다. 코드를 간단히 수정해 보도록 할께요.


지난 포스팅에서 특정 영역을 선택하여 배경색을 변경하는 작업을 매크로를 활용하여 자동적으로 코드를 생성하였습니다. 여기서 포인트는 "자동적으로 선택된 셀의 배경색을 변경한다" 입니다. 


그럼 저기위의 코드중에 색을 설정하는 코드가 있을 겁니다. 코드를 다시 확인해보겠습니다. 색상에 대한 코드가 있는지 살펴보면 .Color라고 Color의 속성을 변경하는 코드가 있습니다. .Color = 65535라고 되어 있는 코드가 실질적으로 색상을 변경하나보네요. 


자 그럼 다른 색상으로 변경하고 싶다면 .Color에 들어가는 값을 바꿔주면 되겠죠. 


Sub MacroTest()

'

' MacroTest Macro

'

' Keyboard Shortcut: Ctrl+Shift+A

'

    Range("A1:B8").Select

    With Selection.Interior

        .Pattern = xlSolid

        .PatternColorIndex = xlAutomatic

        .Color = 65535

        .TintAndShade = 0

        .PatternTintAndShade = 0

    End With

    Range("D10").Select

End Sub


이 글을 보시는 분은 초급분들이 많으실테니 .Color의 값을 걍 0으로 바꿔보도록 하겠습니다. 

(엑셀의 Color 설정은 RGB 함수를 통해서 할 수 있습니다. 이 부분은 추후에 고급부분에서 다루도록 할께요.)


Sub MacroTest()

'

' MacroTest Macro

'

' Keyboard Shortcut: Ctrl+Shift+A

'

    Range("A1:B8").Select

    With Selection.Interior

        .Pattern = xlSolid

        .PatternColorIndex = xlAutomatic

        .Color = 0

        .TintAndShade = 0

        .PatternTintAndShade = 0

    End With

    Range("D10").Select

End Sub


코드를 이렇게 변경하고 F8을 8번 더 눌러 코드를 종료(혹은 F5를 통해서 한방에 종료가 가능합니다.)시킵니다. 그리고 엑셀 화면으로 돌아가 봅니다.

.Color의 값을 변경하고나서 매크로 실행 결과를 보니 이전과는 다른걸 확인할 수 있습니다. 즉 .Color의 값을 변경하면 다른 색상으로 바꿀 수 있는걸 따라해 하신겁니다. 



위와 같은 방법은 VBA 코드를 디버깅할 수 있습니다. 


처음이라 어렵다고 생각하실 수 있는데 어려운것 보단 익숙하지 않아서 그런겁니다. 두려워마세요. 

그럼 이만 줄이겠습니다. 


댓글