>
엑셀 VBA 마리오게임 변수 & 초기화면 설정하기 :: 엑셀 VBA 강의 3-6
첨부파일에 이상이 생겼을 경우, 1:1 문의하기로 연락주시면 신속히 해결해드리겠습니다.
1. 시트개체 이름 변경하기
엑셀 마리오게임을 실행할 시트의 개체명을 변경합니다. Alt + F11 키를 눌러 VBA 편집창을 실행한 뒤, [마리오게임] 시트를 선택합니다. 그 후 키보드 F4키를 누르면 속성창이 나타납니다. 속성창에서 워크시트의 개체명을 [GameSheet]로 변경해줍니다.
2. Sheet Init 과 Init 명령문 작성을 위한 새로운 모듈 추가
공통변수를 지정하고 초기화명령문을 작성하기 위한 새로운 모듈을 추가합니다. 모듈의 이름은 ‘MarioModule’로 변경해줍니다.
3. 공통변수 설정 및 시트 초기화 명령문 추가
엑셀 마리오게임에서 사용될 변수 3개를 Public (공통변수)로 지정해줍니다. Public와 Private의 차이점에 대한 설명은 아래 링크를 참고하세요.
공통변수는 총 3개를 만들어 줍니다.
- pointRng as Range : 마리오를 출력할 기준 셀을 지정합니다.
- Facing as Boolean : 마리오가 바라보고 있는 방향을 결정합니다.
- Jump as Boolean : 마리오가 점프하고 있는 상황을 나타냅니다.
시트 초기화 명령문을 작성합니다.
- 게임에서 사용된 하늘색의 RGB값은 = RGB (221, 235, 247) 입니다.
- 시트의 21행부터 36행까지 배경색을 하늘색으로 변경한 뒤, 기준셀 (F21셀)에 마리오를 출력합니다.
- 마리오를 출력하기 위해 이전강의에서 만들었던 Mario_RW 명령문을 사용합니다.
아래 명령문을 복사하여 MarioModule 모듈안에 붙여 넣어주세요.
Option Explicit Public pointRng As Range '// 마리오를 출력할 기준 셀이 되는 범위 Public Facing As Boolean '// 마리오가 앞을 바라보는지 뒤를 바라보는지 방향을 결정할 값 Public Jump As Boolean '// 마리오가 점프중인지 판단하는 값 Sub Sheet_init() Dim StartRng As Range With GameSheet Set StartRng = .Range("F21") .Range("21:36").Interior.Color = RGB(221, 235, 247) Mario_RW StartRng End With End Sub
4. 활성화된 셀을 기준으로 범위를 초기화 할 명령문 작성
방금 작성한 Sheet_Init 명령문은 활성화된 셀 위치에 상관없이 21행~36행까지의 모든 범위 배경색을 하늘색으로 초기화하고, F21셀에 마리오그림을 출력하는 명령문입니다.
이번에 작성할 명령문은, 활성화된 셀을 기준으로
- 아래로 15칸, 우로 15칸 넓힌 범위를 하늘색으로 초기화하는 명령문입니다.
- VBA에서 셀을 기준으로 범위를 넓히는데 크게 2가지 방법이 있습니다.
- Resize 속성을 이용하는 방법
- Range 속성을 이용하여 범위시작 셀과 마지막 셀을 지정해주는 방법 - 이번 강의에서는 Range 속성을 이용하여 범위시작 셀과 마지막 셀을 지정하는 방법으로 명령문을 작성합니다.
Resize 속성을 이용하는 방법은 이전강의를 참고해주세요.
아래 명령문을 복사하여 MarioModule 모듈에 이어서 붙여넣기합니다.
Sub init(Rng As Range) Dim rngRow As Long Dim rngCol As Long Dim newRng As Range rngRow = Rng.row rngCol = Rng.Column With GameSheet Set newRng = .Range(.Cells(rngRow, rngCol), .Cells(rngRow + 15, rngCol + 15)) newRng.Interior.Color = RGB(221, 235, 247) End With End Sub
5. 작성한 명령문 테스트하기
작성한 명령문을 테스트하기 위해 아래 2개의 명령문을 모듈에 추가합니다.
Sub Print_Mario() Mario_RW ActiveSheet.Cells(21, ActiveCell.Column) End Sub Sub Clear_Mario() init ActiveSheet.Cells(21, ActiveCell.Column) End Sub
작성한 명령문을 테스트하기 위해 매크로에 단축키를 설정합니다.
- Clear_Mario : Ctrl + Shift + C
- Print_Mario : Ctrl + Shift + D
- Sheet_Init : Ctrl + Shift + A
단축키 설정을 마쳤으면, 마리오 게임 시트에서 설정한 단축키를 입력하여 명령문이 잘 동작하는지 테스트합니다.