1️⃣ 핵심 이론
VBA 란?
office 프로그램을 위한 프로그래밍 언어
VBA의 장점
① (엑셀 설치되어있다는 전제 하에) 설치, 패키징 필요 없음
VBA의 단점
① 라이브러리가 제한적
② 실행 취소가 불가능
VBA 쓰는 이유는?
(데이터를, 기능을) 자동화시키기 위해서
VBA 구분
① 시트 / 통합 문서
- 시트나 통합 문서에서 실행하는 명령문
- 클릭, 실행, 더블 클릭 등의 이벤트 작성
② 유저 폼
- 유저 폼 안에서 실행하는 명령문
- 클릭, 실행, 더블 클릭 등의 이벤트 작성
③ 모듈 (매크로 기록)
- 그 외 전반적으로 모든 상황에서 쓰이는 코드를 작성
2️⃣ 실습
매크로를 작성했다면!
매크로 포함 문서로 파일을 저장해야 함 (. xlsm 파일)
외부에서 매크로 파일을 다운로드하였다면, 매크로 차단을 방지하기 위해서
아래와 같은 단계를 거쳐야 함
우클릭 → 속성 → 차단 해제 선택 → 적용차단 해제를 클릭해야 매크로를 사용할 수 있다.
① 파일을 열었을 때, 메세지 박스 출력
글씨를 넣을 때는 " " 사이에 넣어야 함
② 시트를 클릭했을 때, 메세지 박스 출력
시트를 클릭하면 메세지 박스가 출력됨
③ 버튼을 클릭했을 때, 빈칸에 "미제출", 노란색 바탕으로 출력
▼ 매크로 만들기 ▼
▼ 매크로 버튼 만들기 ▼
*매크로 확인 시, 매크로 만들며 채워진 내용을 지워야 오류가 없음
▼ 내용이 추가되었을 때 인식하게끔 만들기 ▼
범위가 제한적이기 때문에
새로운 내용을 입력해도 인식하지 못함
❗ 코드 해석
Range("B2") : B2 셀에서
CurrentRegion : 현재의 영역을
Select : 선택함
④ 비만도 계산하는 함수 만들기
Sub
Sub Procedure의 약자. 어떤 동작을 실행해야 할 때 사용 (실행문)
Function
어떤 값을 결과로 출력해야 할 때 사용 (계산식, 함수에 주로 사용)
▼ 함수 만들기 ▼
Function : 선언
BMI (몸무게 Weight, 키 Height)
: 함수의 이름 (인수 값 1, 인수 값 2)
비만도 = 몸무게(kg) / 키(m) ^2
: 몸무게는 50kg, 키는 160cm라 가정 ▶ BMI = 50 / (160 / 100) ^ 2
* 키가 cm이기 때문에 m로 변환해야 함
BMI = Weight / (Height / 100) ^ 2
▼ 비만도 계산하기 ▼
⑤ 주민 등록 번호로 성별을 판별하는 함수 만들기
▼ 함수 만들기 ▼
Function : 선언
ID_Gender (주민등록번호 ID)
: 함수의 이름 (인수 값 1)
WorksheetFunction
: VBA로 엑셀의 워크시트 함수를 사용하겠다는 의미
ⓐ 주민 등록 번호의 8번째 자리가 성별을 뜻함
💗 = mid (주민등록번호 ID, 8, 1)
: ID의 / 8번째 자리부터 / 1번째 글자를 출력함
ⓑ 홀수는 남자, 짝수는 여자
💗 isodd ( mid(주민등록번호 ID, 8,1) )
: 인수로 넣은 숫자가 홀수면 True, 짝수면 False
ID_Gender = WorksheetFunction. isodd ( mid(주민등록번호 ID, 8,1) )
: ID_Gender 함수는 워크시트의 mid 함수와 isodd 함수를 사용한다는 뜻
---------------------------------------------------------------------------
IF ID_Gender = True Then
: 만약에 ID_Gender의 값이 True 라면
ID_Gender = "남자"
: ID_Gender는 남자라고 출력된다.
Else
: True가 아니라면
ID_Gender = "여자"
: ID_Gender는 여자로 출력된다.
▼ 성별 판별하기 ▼
3️⃣ 미션
① 빈셀 찾기, 노란색 채우기, 미제출을 입력하는 매크로
② Find_Gender(이름) 함수를 만들어 이름을 입력하면 성별이 출력되는 함수
4️⃣ 궁금증
조건부 서식을 VBA에 넣는 게 효율적인지...?
아니면 그냥 조건부 서식을 만드는게 나은지...
'오빠두엑셀 스터디 > VBA 4주 완성' 카테고리의 다른 글
[2주차] VBA를 시작하는 4가지 코드 (Dim / Set / For / If ) (0) | 2022.07.16 |
---|