엑셀 매크로 사용방법 자세히 알아보기! - 1 (매크로 기록기 사용, VBA 코드 간단 설명)

2021. 11. 21. 00:12공부/엑셀

반응형
SMALL

 

안녕하세요! 종호 입니다 :)

이번 포스팅에서는 엑셀에서 매크로 사용방법에 대해서 알아볼 예정 입니다.

(매크로 기록기를 사용하는 방법이며, 그 외 다른 기초적인 부분도 포함되어 있습니다.)

*해당 포스팅은 Excel 2016 을 기반으로 작성한 내용 입니다.

엑셀 버전에 따라서 다를 수도 있습니다.

 

 

 

 

 


설명하기 앞서, 위 링크를 확인해주시기 바랍니다.

개발도구 표시, 매크로 저장 위치, 매크로 기록기를 사용한 간단한 매크로 기록 에 대하여 작성되어 있습니다.


 

 

 

 

 

 

 

 

 

 

 

위 이미지와 같이 간단한 내용들을 작성하고

 

 

 

 

 

 

 

 

 

 

 

 

 

 

① 개발 도구 - ② 매크로 기록 을 클릭해줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

매크로 이름 사용자가 보고 알아보기 편한 것으로 입력하시면 되겠습니다.

확인을 누르는 순간부터 사용자가 행동하는것들이 매크로로 기록되니, 유의하셔야 합니다.

 

바로 가기 키 엑셀에서 사용하던 단축기키와 같은 것으로 지정할 경우,

엑셀에서 사용하던 단축키를 사용할 수 없게 됩니다.

 

ex) 엑셀 단축키 중 복사하기 (Ctrl + C)와 같이, 매크로 바로 가기 키를 c로 지정했을때

복사하기 단축키는 사용할 수 없게 됩니다.

 

엑셀의 단축키 중에 비어 있는 단축키는 j, m 입니다. (소문자)

 

표시되는 매크로 기록 창에서,

 

매크로 이름 = 연습

바로 가기 키 = Ctrl + j

매크로 저장 위치 = 개인용 매크로 통합 문서

 

로 지정하고 확인을 눌러줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

대문자로 지정하실 경우 Ctrl + Shift 단축기로 변경되니,

이왕이면 없는 단축키에다 지정하시는 것을 추천드립니다.

 

또한 매크로를 실행 한 후에는 되돌리기 (Ctrl + Z)를 사용 할 수 없으니, 사용에 주의하셔야 합니다.

 

매크로 저장 위치

 

새 통합문서,

현재 통합문서,

개인용 매크로 통합 문서

가 있습니다.

 

새 통합문서는 새로운 통합문서에다가 매크로를 저장한다는 것이고,

현재 통합문서는 현재 열려있는 통합문서에 매크로를 저장한다는 것입니다.

(말 그대로)

 

개인용 매크로 통합 문서는, 이전의 작성했던 매크로 관련 포스팅에서

엑셀 폴더에 저장되어 진다고 말씀드렸었습니다.

 

매크로를 실행할때에, 매크로가 저장되어 있는

해당 문서가 열려 있어야 하므로 번거로움이 존재합니다.

 

개인용 매크로 통합 문서로 지정해두면 새로운 통합문서가 열리더라도 숨기기로 자동 적용되어 있으므로

새로 만든 통합문서에서도 이전에 작성했던 매크로를 사용할 수 있습니다.

 

(물론 큰 차이는 없지만, 개인 취향으로 인하여 저장위치는 개인용 매크로 통합 문서로 설정하겠습니다.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

만약 엑셀창을 열때에 PERSONAL.XLSB 라는 매크로 파일이 같이 열린다면,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

해당 매크로 파일(PERSONAL.XLSB)에서 ①보기 - ② 숨기기 를 적용하시면 창이 사라집니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

기존의 사용하던 파일을 닫으려고하면

개인용 매크로 통합 문서에 변경 내용을 저장하시겠습니까?

라는 표시가 뜹니다.

 

저장 을 눌러주시면 됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

잠시 삼천포로 빠지긴 했지만, 다시 이전의 매크로 기록에 관하여 설명을 진행하겠습니다.

 

단축키를 지정해놓은 상태에서 확인을 누르게 될 경우

기록 중지가 표시되는 것을 확인할 수 있습니다.

이제부터 사용자의 행동들에 대해서 매크로를 기록하고, VBA 언어로 작성 및 저장 되어집니다.

(엑셀이 알아서 해줍니다. 고마워요! 엑셀!)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

저는 간단하게 함수를 입력했습니다.

 

G7 셀에 =left(F7,2) 라는 left 함수를 사용해서

F7에 있는 셀의 글자 전체에서 왼쪽 2개를 가져옵니다.

 

엔터를 누릅니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G7 셀을 복사하여

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G8셀에서 G10셀까지 범위를 지정해준다음

(G8:G10)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

붙여넣기를 실행하고 기록중지를 누릅니다.

이렇게 해서 하나의 간단한 매크로를 기록했습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

매크로 기록이 완료되었으니, 입력됐던 셀 들을 지우고

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

개발도구 탭에 있는 매크로를 클릭하여 만들었던 연습 이라는 이름의 매크로를 실행시켜 줍니다.

(매크로 단축키 Alt + F8)

 

바로 가기 단축키를 지정해놨으므로, 지정했던 단축키를 사용하셔도 됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이전의 했던 행동들과 똑같이 표시되는 것을 확인할 수 있습니다. (복사 후 붙여넣기)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

기록된 매크로의 VBA 내용을 확인하기 위해서, 단축키 Alt + F11 을 눌러 VBA 창을 열어줍니다.

(개발 도구 내에 Visual Basic 적혀 있는 것을 클릭하는것과 동일합니다.)

 

열린 VBA 창에서 왼쪽 상단쯤에 위치한 VBAProject (PERSONAL.XLSB)를 찾은 후,

이름 왼쪽에 작게 + 로 되어 있는 것을 클릭하여 - 로 표시 되게 합니다.

그럼 아래에 Microsoft Excel 개체, 모듈 이라는 폴더가 표시 될텐데

VBA는 모듈 이라는 폴더에 작성되어집니다.

 

모듈 폴더 안에 있는, 영어로 Module 이라 적혀져있는 것을 더블클릭 하면

오른쪽에 해당 모듈에 관한 내용이 표시됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

해당 모듈의 내용은 위 이미지와 같습니다.

 

만약 Sub 연습() 이라고 적혀 있는 부분을,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

연습77 로 변경한 후 엑셀로 돌아가서,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

매크로 단축키인 Alt + F8 로 기록된 매크로의 이름을 확인해보면

연습77 로 이름이 변경된 것을 볼 수 있습니다.

 

바로가기 단축키 변경은 위 이미지에서 변경할 매크로를 선택하고

옵션 을 클릭하면

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sub 연습()
'
' 연습 매크로
'
' 바로 가기 키: Ctrl+j
'
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],2)"
    Range("G7").Select
    Selection.Copy
    Range("G8:G10").Select
    ActiveSheet.Paste
End Sub


 

위 소스코드는 기록한 매크로를 VBA 로 번역 되어 진 코드 입니다.

(엑셀이 해줬어요. 잘한다! 엑셀!)

 

 

 

 

 

 

 

 

 

 

 

 

Sub 연습()
 

제일 위 Sub 연습() 부분을 변경하여 이름을 변경할 수 있다고 말씀 드렸고,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'
' 연습 매크로
'
' 바로 가기 키: Ctrl+j
'
 

이 부분은 이미 주석 처리 되어 있고, 주석을 제거하고 내용을 변경하더라도 반영 되는 곳이 없습니다.

 

 

 

 

 

 

 

 

 

 

 

 

    ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],2)"
    Range("G7").Select
    Selection.Copy
    Range("G8:G10").Select
    ActiveSheet.Paste
 

그 아래의 소스 코드를 한번 살펴보도록 하겠습니다.

 

 

 

 

 

 

 

 

 

 

 

    ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],2)"
 

먼저 이 코드의 ActiveCell 이란 하나의 셀을 활성화 시켰을때 표시되는 내용 입니다.

 

제가 매크로 기록을 한 후 특정 셀을 클릭한게 아니라,

기존의 위치한 셀에 그대로 함수를 작성했기 때문에

ActiveCell 이 됩니다.

 

FormulaR1C1 은 셀에 값을 입력하는 동작을 의미하며, Value 와 같습니다.

 

 

 

 

 

 

 

 

 

 

    ActiveCell.Value = "=LEFT(RC[-1],2)"
 

위와 같이 입력하더라도, 실행되는 매크로는 변함이 없습니다.

코드는 현재 셀에 대해 활성화 하여, 해당 값으로 =Left(RC[-1],2 를 입력하라는 내용 입니다.

 

RC[-1] 은 R1C1 형식으로 C(Column)에 대하여 -1 떨어진 셀을 선택한다는 이야기 입니다.

R1C1 형식에 관하여 알고 있다면 조금 더 편하게 이해하실 것 같습니다.

 

 

 

 

 

 

 

 

 

 

 

 

    ActiveCell.Value = "=LEFT(R[-1]C[-1],2)"
 

 

만약 위와 같은 형식(R[-1]C[-1])이라면,

R(Row)에 대하여 -1,

C에 대하여 -1 이므로

 

 

 

 

 

 

 

 

 

 

 

 

 

결론적으로 대각선에 위치한 값에서 2개의 글자를 가져오게 됩니다.

 

이것에 대해서 처음 접하시는 분이라면 생각보다 이해하기 어려우실 것이라 판단됩니다.

 

 

 

 

 

 

 


R1C1 형식과 관련하여 조금이나마 도움되시기를 바라며,

제 블로그 내에 작성했던 R1C1 참조 스타일에 대한 링크를 걸어 두겠습니다.


 

 

 

 

 

 

 

 

 

 

 

 

 

    Range("G7").Select
    Selection.Copy
    Range("G8:G10").Select
    ActiveSheet.Paste
 

Range("G7").Select = G7 셀을 선택한다.

Selection.Copy = 선택된 셀을 복사한다.

Range("G8:G10").Select = G8에서 G10 셀을 선택한다.

ActiveSheet.Paste = 붙여넣기 한다.

(G8에서 G10을 선택한 상태이니 해당 셀들에 붙여넣기 합니다.)

 

라고 생각하시면 되겠습니다.

 

소스 코드의 전체 내용을,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sub 연습()
'
' 연습 매크로
'
' 바로 가기 키: Ctrl+j
'
    ActiveCell.Value = "=LEFT(RC[-1],2)"
    Range("G7").Copy
    Range("G8:G10").PasteSpecial
End Sub
 

위와 같이 변경해도 똑같이 사용이 가능합니다.

불필요하다고 생각되는 것들을 조금 삭제한 것이라,

어떤 부분이 변경되었는지 이전과 비교 하여 보시는걸 추천드립니다.

 

복사 VBA 명령은 Copy,

붙여넣는 VBA 명령은 PasteSpecial 입니다.

(Select 가 되어 있지 않은 상태에서 ActiveSheet.Paste 는 사용이 안되더라구요.)

 

단순한 작업에 대해서는 매크로를 만들 필요가 없이 복사 - 붙여넣기로 해결할 수 있지만,

많은 양의 데이터들에 대해서 번거로운 작업을 해야 하는 경우에는

매크로 기록 또는 작성하여 사용하는것도 하나의 좋은 방법이 될 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

단순한 내용을 설명으로 풀어쓰려니 글을 작성하는데 대단히 오랜 시간이 걸리네요.

이제 사용방법의 첫번째를 작성하지만,

VBA 언어에 대해서 어떻게 설명을 드려야 할까 많은 고민을 했었던 것 같습니다.

 

 

 

 

 


글 읽어주셔서 감사합니다.

오늘도 좋은 하루 되세요 :)

 

반응형
LIST