컴활1급 실기 ‘엑셀 프로시저’가 도대체 뭐지? (1)
컴활을 독학하는 당신을 위해 준비했다. 컴활1급 실기에서 엑셀 프로시저라는 부분이 있는데, 사실상 이해하기보다 암기를 많이 해야하는 부분이다. 하지만 전체적인 구조를 모른채 쌩암기하는 것은 비효율적이므로 러프하게 설명하고자 한다.
1. 컴활 1급 실기에선 어떤 문제가 나오나
컴활1급 실기는 (1)기본 작업, (2)계산 작업, (3)분석 작업, (4)기타 작업 등으로 이루어진다. (1) 기본작업은 데이터에 관한거다. 외부 데이터베이스 가져오기, 고급필터, 조건부 서식 등을 쓰면 된다. (2) 계산 작업은 각종 수학함수로 수식을 쓰고 값을 산출하면 된다. (3) 분석 작업은 피벗테이블 작성과 매크로를 활용하면 된다. (4) 기타 작업이 가장 어려운 난이도를 자랑하는데, 크게 차트 작업과 엑셀 프로시저로 나뉜다. 본 포스트에서 다루고자 하는 게 바로 이 엑셀 프로시저다.
2. 엑셀 프로시저 예제
다음 문제는 본인이 인터넷 검색을 통해 얻은 문제이다.
|
2. ‘기타작업-2’ 시트에서 다음과 같은 작업을 수행하고 저장하시오.(각 5점) ① <대여차종검색> 버튼을 클릭하면 <차종검색화면> 폼이 나타나도록 프로시저를 작성하시오.
|
그리고 이게 기타작업2 시트의 모습이다.
3. 문제가 시키는대로 따라가 보자
먼저 첫번째 문제다.
“① <대여차종검색> 버튼을 클릭하면 <차종검색화면> 폼이 나타나도록 프로시저를 작성하시오.”
여기서 폼이라는 건 창(Window)을 말한다. 인터넷 익스플로러, 윈도우 탐색기 같은 것들은 모두 폼을 갖고 있다. 예컨대 전체화면으로 실행되는 스타크래프트같은 건 폼이 없는거다. 그렇다면 프로시저란 무엇일까? 자세히 알건없고 프로시저는 프로그램이라 보면 된다.
즉 첫번째 문제는, 대여차종검색 버튼을 클릭하면 차종검색화면이라는 폼(창)이 나오도록 프로그램을 짜라는거다.
컴활1급은 문제를 줄 때 파일에 이미 폼을 포함시켜서 준다. 그렇지만 일단 우리는 원리를 이해하기 위해 빈 문서에서 폼을 만드는걸 배워보자.
먼저 새 문서를 연다.
프로그램(프로시저)을 짜려면 어떻게 해야하지? 엑셀에서 Alt+F11을 눌러보면 된다.
▼Alt+F11을 누르면 비주얼베이직 창이 나온다. 이를 VBA 화면이라고 한다.
Alt+F11을 누르면 나오는 비주얼베이직은 보통 VBA(비주얼베이직 어플리케이션)라고 부른다. 베이직이란 C나 자바같은 일종의 프로그래밍 언어인데, 자세히 알건 없다.
프로시저를 짤 때는 무조건 Alt+F11을 눌러 여기 들어오면 된다.
보통 컴활1급 실기에서 미리 폼의 모양을 만들어서 문제를 준다. 그러나 원리를 이해하기 위해 직접 폼을 만들어보겠다.
4. 폼 만들기
▼ 왼쪽에 탐색창에서 (1)마우스 우클릭-(2)삽입-(3)사용자 정의 폼 을 클릭하면 폼이 만들어진다.
▼폼이 만들어진 모습
그리고 화면 한 쪽에 떠있는 도구상자 창에서 컨트롤들을 끌어다가 배치하면 된다.
컨트롤이란 개체를 말한다. 컨트롤은 다음과 같은 것들이 있다. 커맨드버튼(회색 버튼), 텍스트박스(수정가능한 글자박스. 흔히 아이디/비번 입력하는 칸처럼 생김), 레이블(혹은 라벨. 수정불가능한 글자들), 체크박스(브이 체크가능), 옵션박스(동그라미 체크가능. 체크박스와 다른 점은 체크는 중복 선택가능, 옵션은 1개 선택가능)
▼근데 실전 문제에서 폼을 만들 필요는 없다. 폼 모양은 미리 만들어져서 주어진다.
다만 폼이 안주어질 경우, 좌측 상단부터 순서대로 만들면 된다.
레이블(차종), 콤보박스, 커맨드박스(검색), 커맨드박스(닫기).. 순으로 만들면 된다.
5. 버튼을 클릭하면 폼이 나오게 하기
▼ 지금 기타작업-2 시트에는 “대여차종검색”이라고 쓰여있는 커맨드버튼이 1개 놓여있다. 커맨드버튼이 뭐냐하면 회색으로 된 흔한 버튼을 말한다.
역시 Alt+F11을 이용해 VBA화면으로 가보자.
그리고 해당 시트에 들어가서 아래와 같이 해본다.
▼ (1)버튼이 들어있는 시트를 고른다. 여기선 기타작업-2 (2)cmd대여차종검색을 선택 (3)click을 선택
그러면 자동으로 private sub cmd대여차종검색_Click() / End sub 가 나온다.
이게 무슨 원리냐면 다음과 같다. 엑셀 파일의 내부는 시트, 폼, 모듈 등으로 이뤄져있다. 그래서 왼쪽 탐색창에서 시트, 폼, 모듈을 생성하거나 더블클릭해서 내용 수정하면 된다. 실제로 시트, 폼, 모듈을 막론하고 더블클릭하면 그냥 메모장처럼 덩그러니 빈 공간이 나오는데, 그 안에 VBA로 마음껏 코딩할 수 있다.
코딩하는 법은 다음과 같다. 위 그림의 2번이 왼쪽 박스, 3번이 오른쪽 박스다.
왼쪽 박스에서는 개체를 고를 수 있고, 오른쪽 박스에서는 행위를 고를 수 있다.
지금 왼쪽 박스에서는 (1)일반, (2)cmd대여차종검색, (3)worksheet를 고를 수 있다.
보통 폼에서 해보면 개체 목록에 컨트롤같은 게 잔뜩 있다. 텍스트박스, 레이블, 커맨드박스,콤보박스(클릭하면 펼쳐지는 복수의 선택지), 리스트박스(미리 펼쳐져있는 복수의 선택지) 같은 것들이다.
지금은 폼이 아니라 시트여서 개체가 별로 없다. 보통의 시트는 일반과 worksheet만 있는데, 현재 이 시트에는 커맨드버튼이 있으므로 특이하게 cmd대여차종이 있다. 커맨드버튼이 3개 있는 시트라면 개체는 더 많아진다. (일반, cmd1, cmd2, cmd3, worksheet)
그럼 좌박스:일반, 우박스:선언이란 뭘까? 일반은 그냥 개체와 상관없이 동작하기 때문에 선언 밖에 못쓴다. 선언이 뭐냐면 변수같은 걸 등록하는 것이다. 내가 지금부터 a라는 변수를 쓰겠습니다, 라고 프로그램에 선언하는거다. 그럼 변수가 뭐냐고? 그건 나중에.
그리고 오른쪽 박스에서는 행위를 고를 수 있다. click을 고르면 개체를 클릭할 때 실행한다는 거다.
만약 GotFocus를 고르면 그냥 tab키를 눌러서 포커스가 가기만 해도 내용이 실행된다. MouseMove를 고르면 버튼 위에서 마우스 움직임이 감지되기만 해도 내용이 실행된다.
아래는 이해를 돕기 위해 재미로 만들어본거다.
(1) 왼쪽에서 아무 시트나 고르고
(2) 좌박스 worksheet, 우박스 activate 고른다.
그러면 Worksheet_Activate라는 새로운 sub가 하나 생긴다. End sub와 사이에
MsgBox “워크시트가 활성화되면 실행됨”
을 넣는다.
sub란건 실행의 한 단위라고 보면 된다. 몰라도 된다.
(3) 좌박스 worksheet, 우박스 change 고른다.
그러면 Worksheet_Change라는 새로운 sub가 또 생긴다. End sub와 사이에
MsgBox “워크시트가 변경되면 실행됨”
을 넣는다.
(4) 시트를 수정하거나, 새로 열어보거나 하면 메시지 창이 뜬다.
왜냐하면 개체(워크시트)에 대한 행위(activate:활성화, change:변경)가 일어날 경우 msgbox가 뜨도록 코딩했기 때문이다.
원래 문제로 돌아가서, 커맨드 버튼을 누르면 폼이 뜨게 해보자.
폼이름.show가 바로 폼을 뜨게 하는 명령어다.
여기서 폼을 새로 생성했다면 보통 이름이 Userform1이므로 Userform1.Show 하면 버튼을 누를 경우 창이 뜰 것이다.
▼ 하지만 문제에서 제시된 폼 이름이 차종검색화면이므로 차종검색화면.show로 코딩한다.
그럴 일은 없겠지만 만약 폼 이름을 바꾸고 싶다면 아래와 같이 한다.
▼ (1)좌측상단 탐색창에서 UserForm1을 고르고 (2)그 아래(좌측하단) 속성창에서 이름 변경가능하다
이름은 차종검색화면으로 하고 엔터를 누른다.
이로써 문제1번에 대한 설명이 끝났다. 컴활 1급 실기의 문제는 각기 모두 다르지만, 유형별로 보면 비슷비슷하다는 걸 깨달을 것이다.