엑셀 VBA 마리오 게임 만들기 [6/8] :: 변수 초기화면 설정

엑셀 마리오 벽돌깨기 게임의 실전 코딩의 시작, 변수 및 초기화면 설정방법과 예제코드를 알아봅니다.

# VBA

작성자 :
오빠두엑셀
최종 수정일 : 2022. 11. 02. 03:57
URL 복사
메모 남기기 : (1)

>

엑셀 VBA 마리오게임 변수 & 초기화면 설정하기 :: 엑셀 VBA 강의 3-6

실습파일 무료E-Book 강의 PPT 파일 완성파일
첨부파일에 이상이 생겼을 경우, 1:1 문의하기로 연락주시면 신속히 해결해드리겠습니다. 

1. 시트개체 이름 변경하기

엑셀 마리오게임을 실행할 시트의 개체명을 변경합니다. Alt + F11 키를 눌러 VBA 편집창을 실행한 뒤, [마리오게임] 시트를 선택합니다. 그 후 키보드 F4키를 누르면 속성창이 나타납니다. 속성창에서 워크시트의 개체명을 [GameSheet]로 변경해줍니다.

VBA 시트 이름 변경 방법 GIF

2. Sheet Init 과 Init 명령문 작성을 위한 새로운 모듈 추가

공통변수를 지정하고 초기화명령문을 작성하기 위한 새로운 모듈을 추가합니다. 모듈의 이름은 ‘MarioModule’로 변경해줍니다.

VBA 모듈 추가 GIF

3. 공통변수 설정 및 시트 초기화 명령문 추가

엑셀 마리오게임에서 사용될 변수 3개를 Public (공통변수)로 지정해줍니다. Public와 Private의 차이점에 대한 설명은 아래 링크를 참고하세요.

Public vs 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 속성을 이용하는 방법은 이전강의를 참고해주세요.

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

엑셀 VBA 단축키 설정 GIF

단축키 설정을 마쳤으면, 마리오 게임 시트에서 설정한 단축키를 입력하여 명령문이 잘 동작하는지 테스트합니다.

VBA 명령문 테스트 GIF

5 1 투표
게시글평점
1 댓글
Inline Feedbacks
모든 댓글 보기
1
0
여러분의 생각을 댓글로 남겨주세요.x