Excel – VBA : 매크로(Macro)와 VBA의 기초
안녕하십니까 채랑이 아빠 프리아입니다. 오늘도 취미활동을 엑셀을 올릴 예정입니다. 다만, 너무 수식만 하니까 제가 재미가 없어지는 듯하여 VBA를 섞어서 올리도록 하겠습니다. ㅎㅎㅎ원래 제 전문은 엑셀 수식보다는 VBA 쪽이라고 할까요 ^^;;솔직히 전문까지는 아니구요… 다만 비주얼베이직을 많이 공부했던바 있어서, 다른 분들보다 조금 더 깊게 알고 있을 정도입니다.(그래도 정보처리기사 자격증은 있다구요… 하긴 공과대학교 나온 사람 중에 그거 없는 사람이 몇이나 된다고 ㅠ.ㅠ) 그래서 오늘은 VBA 입문을 위한 매크로 연결 기초를 설명 드리겠습니다. 일단 VBA를 설명드리려면 매크로를 먼저 설명드려야 합니다.엑셀에서 매크로 기능이라고 하면, 일련의 행동을 그대로 기록해 두었다가,나중에 실행하면 매크로의 기록된 작업이 그대로 반복하는 행위를 말합니다.게임에서도 매크로라는 말을 쓰는데요, 동일하고 같은 작업을 반복하는 행위를 뜻하죠. 매크로 기능은 보기 > 매크로 > 매크로 기록을 누르시고 일련의 행동을 만들면 됩니다.일단 간단하게 A1에는 “매크로 테스트”, B1에는 “2022-11-14″을 기록해 보도록 하겠습니다.간단하게 보기 > 매크로 > 매크로 기록을 누르시고, 매크로 이름은 매크로1로 그냥 두시고 확인을 누르세요.그 다음에 A1과 B1에 지정한 문구를 넣으시고, 보기 > 매크로 > 기록중지를 누르세요.그러면 하나의 매크로가 만들어집니다. 자 그럼 이 매크로를 어떻게 사용하느냐… 바로 버튼을 만들어서 사용하시면 됩니다.버튼이라고해서 거창한 것은 아니구요.삽입 > 도형에 들어가셔서 아무모양이나 넣으시면됩니다. 저는 사각형 : 빗면(버튼 모양)을 넣을 겁니다.그리고 해당 도형을 마우스 우측 클릭하신 후 매크로 지정을 누릅니다.그리고 좀전에 기록한 매크로1(이름을 바꾸셨다면 바꾸신 이름을 선택하시면 됩니다.)을 누르시고 확인 버튼을 눌러줍니다. 자, 그럼 아까 넣었던 A1셀과 B1 셀의 내용을 지우시고, 매크로 버튼을 눌러보세요.참고로 첫번째 값은 현재 지정되어 있는 셀에 입력될 확률이 큽니다. 왜냐하면, 매크로 기록은 입력칸을 기준으로 하는 것이 아니라, 매크로를 시작할 때의 셀(현재 셀)이 기준이기 때문입니다.그래서 만약 C1에서 매크로를 시작한다면, C1에 “매크로 테스트”, B1에 “2022-11-14″라고 입력될 가능성이 큽니다.다만, 매크로 시작할대 A1이 아닌 다른 셀에서 시작하고 A1으로 옮겨서 “매크로 테스트”라고 쓰셨으면, A1셀에 데이터가 입력될 것입니다. 저는 어디에 나오냐구요? 안 가르쳐주기 위해서 A1셀을 누르고 버튼을 누를꺼에요 ㅋㅋㅋㅋ 이런게 매크로 기능입니다. 다만, 매크로 기능의 경우 한계가 명확합니다. 딱 지정된 행동만 하기 때문에 조건에 따른 내용이라던지, 지정된 사유에 대한 입력 등을 할수 없기 때문입니다.그래서 매크로의 상위 기능으로 VBA를 사용하는 것입니다. VBA는 Visual Basic For Applications의 약자로 비주얼베이직 언어를 엑셀에다가 융합한 기능입니다. 일종의 프로그래밍 언어입니다.다만, 비주얼베이직 언어는 계속 변경되는데 반해 엑셀에서 사용하는 VBA는 비주얼베이직 6.0 버젼 수준에서 멈추어 있습니다.그 점은 참조하여 주시기 바랍니다. 일단, 오늘은 VBA의 기초만 알려드릴 것이기 때문에 기능의 실행만 알려드리고 끝내겠습니다.틈틈이 사용할만한 수식들 알려드릴께요. ^^아니면 저한테 개인적으로 질문해 주시면 알려드리겠습니다.(홈페이지 오른쪽 아래에 보시면 관리자 문의라고 게시판이 연결되어 있어요. 엑셀문의라고 써 주시면 제가 알고 있다면 알려드리겠습니다.) 자 오늘은 A1셀에 “VBA 테스트”, B1셀에 “2022-11-14″을 입력하고, 메세지 박스를 띄워 “Welcome to VBA World”를 써 보겠습니다.웰컴 문구는 모든 프로그래밍 언어를 배울때 최초로 배우는 문구 식이에요 ㅎㅎㅎ. 그래서 저도 그래요(공돌이의 본능입니다.) 일단 엑셀에서 Alt + F11을 눌러주시면 Microsoft Visual Basic for Applications – 통합 문서1이라는 창이 열리는 걸 볼 수 있습니다. 왼쪽에 프로젝트라는 창에는 현재 열려있는 모든 엑셀 문서들이 다 나타나요. 그중 VBA를 적용할 문서를 선택하시면 됩니다.(자동으로 선택되어 있어요.)저기서 모듈이라는 폴더 옆에 +를 누르시면 Module 1이라는 게 보일것입니다. 그걸 더블클릭하시면, 아까 실행한 매크로1의 수식이 나타날 거에요. 저 수식이 매크로1에 저장된 수식입니다.설명해 드릴 수는 있으나, 나중에 하나씩 알려드리다 보면 설명드려야 하는 내용이라서, 오늘은 그냥 패스하겠습니다. 자 End Sub 밑에 엔터키를 눌러 공백을 늘려주시구요.Sub VBA_Test()라고 입력하고 엔터키를 눌러주세요. 그러면 이전 End Sub 밑에 줄이 나타나고, 새로운 End Sub가 나타나는 것을 볼 수 있습니다.Sub는 하위 명령어를 시작한다는 명령이며, End Sub는 해당 명령이 끝났음을 알리는 명령어입니다.즉 Sub와 End Sub 사이의 내용이 VBA 명령어를 실행하는 구문이 되겠습니다. A1셀과 B1셀에 내용을 입력하는 명령어는 다음과 같습니다. Range(“A1”).Value = “VBA 테스트”Range(“B1”).Value = “2022-11-14” Range()는 범위를 선택하는 명령어입니다.“A1” 처럼 하나의 셀을 지정할수도 있지만, “A1:A10″처럼 범위를 지정할 수도 있습니다.그리고 뒤에 있는 .Value는 입력된 값을 의미합니다.Range()뒤에 점을 찍으면 사용할 수 있는 명령어가 여러개 나오게됩니다.이중에서 .Value는 해당 범이에 들어가는 내용을 의미합니다.(나중에 설명하겠지만, 복사도 할 수 있고, 셀 서식을 바꿀 수도 있고, 범위 지정에서 할 수 있는 여러가지 기능을 수행할 수 있습니다.) 또한, Cells 명령어를 사용할 수도 있습니다.Cells명령어를 사용할 때는 다음과 같이 입력해야 합니다. Cells(1,1).Value = “VBA 테스트”Cells(1,2).Value = “2022-11-14” Cells의 명령어 뒤에 숫자는 반드시 행이 먼저이고, 열이 나중이어야 합니다.즉, A1셀은 (1,1)이지만, B1은 (1,2)입니다. – 1행 1열(A열), 1행 2열(B열)임 결과는 동일합니다. 그리고 마지막으로 메세지 박스를 띄우는 명령어는 다음과 같습니다. msgbox “Welcome to VBA World” msgbox 뒤에 따옴표를 넣어서 글자를 입력하는 것이 가장 기본적인 형태입니다.이 외에도 위에서 사용한 Range()나, Cells()를 사용하여 메세지 박스를 띄울수도 있습니다.예를 들면 다음과 같습니다. msgbox Range(“A1”).Value 참 쉽죠? ㅎㅎㅎㅎ 이거 해보고 싶었어요. 예전에 밥로스 아저씨 보면서 ㅋㅋㅋㅋ일단 위에 내용을 모두 포함하여 제가 만든 VBA 식은 다음과 같습니다. 보시면 Sub 밑에 시작할때 탭으로 한칸 안으로 들어간 것을 보실 수 있습니다.Sub 안에 있는 명령어를 구분하기 위하여 많이 사용하는 방식입니다.오늘 하는 것은 간단하기에 굳이 구분할 필요는 없지만, 이러한 방식은 꾸준히 적용하도록 습관화 하는것이 좋습니다.그래야 나중에 좀 복잡한 내용을 하더라도, 쉽게 구분할 수 있으니까요. 자 이제, 엑셀과 연결하겠습니다.아까 만들어 놓은 버튼을 마우스 우클릭하고 매크로지정을 누릅니다. VBA_Test를 선택하고 확인을 누릅니다. 그후 버튼을 좌클릭하면, 지정된 명령이 입력되는 것을 볼 수 있습니다. 위와 같이 입력되고 메세지 창이 뜨는 것을 볼 수 있습니다.(메세지 창은 한꺼번에 2개가 뜨지 않고, 확인 버튼을 눌러야 두번재 창이 뜹니다.) 흥미로우신가요? ^^오늘은 간단하게 입력하는 것을 알려드렸습니다.다음에는 실 사무에 적용할 수 있는 기능을 알려드리도록 하겠습니다. 오늘은 여기서 줄일께요. 즐거운 하루 되시기 바랍니다.
Excel – VBA : 매크로(Macro)와 VBA의 기초 더 읽기"