메뉴
VBA 프로젝트 강의

[엑셀마리오게임] 변수 및 초기화면 설정

오빠두엑셀 by 오빠두엑셀
  • 학습시간 17분
  • 작성일 2018.12.17
  • 조회수 5,676회

마리오게임 변수 설정 및 초기화면 만들기!

이 강의에서는 엑셀 VBA로 만드는 마리오 게임의 여섯 번째 단계로, 게임 전반에서 사용할 공통 변수를 선언하고 마리오가 출력될 시트의 배경을 초기화하는 명령문을 작성합니다. 활성 셀을 기준으로 주변 범위를 다시 칠하는 매크로까지 함께 만들어, 단축키 한 번에 화면이 즉시 초기화되도록 구성하는 방법을 정리합니다.

[엑셀마리오게임] 변수 및 초기화면 설정
DOWNLOADS

실습자료를 준비했어요

수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇

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

마리오 게임이 동작할 시트의 개체명을 변경합니다. Alt + F11 키를 눌러 VBA 편집창을 연 뒤, [마리오게임] 시트를 선택합니다. 이어서 키보드 F4 키를 눌러 속성창을 띄우고, 속성창의 (이름) 항목을 [GameSheet]로 변경합니다. 이렇게 지정한 개체명은 이후 명령문에서 시트를 식별하는 기준으로 사용됩니다.

2. Sheet_Init과 Init 명령문을 작성할 새 모듈 추가

공통 변수와 초기화 명령문을 작성할 새 모듈을 추가합니다. 모듈을 추가한 뒤 모듈 이름을 'MarioModule'로 변경합니다. 이후 모든 게임 명령문은 이 모듈에 누적해 작성합니다.

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에서 셀을 기준으로 범위를 확장하는 방법은 크게 두 가지입니다.
    - 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. 작성한 명령문 테스트하기

작성한 명령문을 테스트하기 위해 아래 두 개의 보조 명령문을 모듈에 추가합니다. Print_Mario는 마리오를 출력하는 명령문, Clear_Mario는 활성 셀 주변을 초기화하는 명령문입니다.

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

단축키 설정을 마쳤으면, 마리오게임 시트에서 지정한 단축키를 눌러 명령문이 의도대로 동작하는지 확인합니다.

댓글 1
5 (1개 평가)
강민준🤗
강민준🤗 2024.08.09 11:13
좋은 강의 감사합니다🙇‍♂️
스크랩 완료