본문 바로가기
조아하는거/PC

EXCEL - VBA로 매크로를 돌려보자

by 시무정 2022. 1. 26.
반응형

"쉽고 간단한 작업부터 어려운 작업까지 컴퓨터가 해줍니다."


 

 


매크로를 알고난 뒤로 제 직장생활이 아주 조금 편해졌습니다.


1. VBA가 뭐죠?

VBA는 Visual Basic Application 의 약자입니다. 컴퓨터좀 하시는 분들은 비주얼 베이직이라고 들어보신적이 있을거에요.

그리고 이 엑셀 VBA는 마이크로소프트사에서 엑셀을 위해 만든 프로그래밍 언어 입니다. (사실 엑셀에만 국한되는게 아니라 다른 오피스 프로그램에도 사용할 수 있습니다.)

 

그냥 엑셀 쓰면 되지 뭐하러 이걸 쓰냐 라고 생각하시는 분들이 많을텐데....

이게 처음 코드 짜두는게 시간이 좀 걸리지만, 제대로 짜두기만 하면 극강의 업무효율을 누릴 수 있습니다.

 

단순작업을 손으로 하면 시간도 오래걸리고, 오류날 확률도 많은데..

이걸 컴퓨터가 오류없이 아주 빠르게 (길어야 30초?) 처리해줍니다.

 

 

구미가 댕기쥬?

 

 

보통 이런 매크로는 두가지 형태로 작성할 수 있는데,

 

1) 기록 기능을 이용한 매크로

기록 기능을 켜고 일련의 데이터 처리과정을 진행하고 나면, 해당 처리과정들이 모두 기록되어 동일한 자료에 대해서 아주아주 빠르게 재반복처리를 할 수 있습니다.

 

다만 처리과정에서 실수를 범하는 것도 모두 기록되기 때문에 틀리지 않고 기록해야한다는 부담이 조금은 생깁니다.

 

2) 직접 코딩

말그대로 프로그래밍 언어를 사용해서 코딩하는 방법이 있습니다.

하지만 처음에는 어떻게 할 줄 모르기 때문에 어떤 변수를 써야 하고, 어떤 함수를 사용해야 할지도..

사용할 수 있는 함수와 기능은 무엇이 있는지도 모릅니다.

 

그래서 저는 1,2번을 같이 사용했씁니다.

기록(코드)을 보면서 함수가 쓰여지는 방식을 알게됐는데...

 

뭐 요즘엔 좋은 강의들 많으니 책 사서 보시는거 추천드립니다 ㅋ


2. 어떻게 쓰나요?

 

일단 엑셀에서 이런 개발도구 기능은 처음엔 막혀있습니다.

 

막혔으면 뚫어줘야겠죠?

 

파일로 들어가서

가장 밑에 옵션을 눌러줍니다.

(버전에 따라 다를 수 있어요.)

그리고 좌측에 리본 사용자 지정을 해준 뒤, 우측에 개발도구에 체크박스를 표시해줍니다.

 

그럼 이런식으로 개발도구 탭이 활성화되어서 본격적인 VBA기능을 사용할 수 있습니다.

 

가장 좌측에 비주얼 베이직을 누르면...

 

이런 식으로 이전에는 보지 못했던 새로운 유형의 창이 뜨게 되는데...

 

저기 회색 빈칸에서 코딩하는 창이 나중에 등장하게 됩니다.


3. 간단하게 매크로 하나만 만들어 볼까요?

앞서 말했떤 기록 기능을 통해서 해보겠습니다.

 

우선 기록 버튼을 눌러줍니다.

탭에 있는거나 하단에 있는 버튼이나 동일한 기능입니다.

 

바로가기 키를 설정해두면 나중에 더 편하게 쓸 수 있긴 한데, 굳이 지금은...

 

일단 확인을 누르면 기록이 시작됩니다.

 

일단 저는 A1부터 E10까지 50개의 셀을 블럭을 씌운 뒤..

글씨체는 경기천년바탕체 레귤러 사이즈로 바꿨고,

폰트는 12포인트로 바꾼 뒤

전체 테두리를 넣어줬습니다.

 

그리고 나서 다시 화면 하단에 ■버튼을 눌러서 기록을 중지했습니다.

 

그리고 기록된 매크로를 구경하러 가봅니다..!

개발도구에서 매크로를 누르신 후, 편집 버튼을 눌러주면...

 

VBA창의 회색 공간에 창 하나가 등장하고...

 

여기에 뭔가 굉장히 많은 영어들이 빼곡하게 쓰여져 있는 것을 확인할 수 있습니다.

 

 

뭐라고 쓰여있는지 한번 가져와보면....

 

노란색은 매크로 시작과 끝

빨간색 -> 처음에 블록씌운거

파란색 -> 서체 변경

주황색 -> 서체 크기 변경

초록색 -> 테두리 변경


Sub 매크로1() '->매크로 시작
'
' 매크로1 매크로
'

'
    Range("A1:E10").Select '-> 처음에 블록씌운거
    With Selection.Font -> 글씨체 변경한거
        .Name = "경기천년바탕 Regular"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    With Selection.Font '-> 글씨크기 변경한거
        .Name = "경기천년바탕 Regular"
        .Size = 12
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone '-> 테두리 변경한거
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub '-> 매크로 끝


 

매크로 기록을 자세히 보면...

굳이 필요없는 문장들이 엄청 많습니다.

 

짧게 줄여본다면...

 


Sub 매크로1() '->매크로 시작
'
' 매크로1 매크로
'

'
    Range("A1:E10").Select '-> 처음에 블록씌운거
    With Selection.Font '-> 글씨체 변경한거
        .Name = "경기천년바탕 Regular"
        .Size = 12
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone '-> 테두리 변경한거
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

End Sub '-> 매크로 끝


이렇게 짧게 바꿔도 그 결과는 동일합니다.

 

예제 첨부드립니다! 화이팅 ㅎㅅㅎ

 

예제.xlsm
0.02MB


그럼 20,000..

반응형

댓글