매일 반복되는 데이터 정리와 보고서 작성에 지치셨다면, 잠시 머리를 식힐 수 있는 엑셀 마리오 게임을 직접 만들어 보겠습니다.
엑셀로 마리오 게임을 직접 만들어보세요. 복사/붙여넣기로 1분이면 됩니다!😆
미리 준비된 VBA 코드를 복사하여 붙여넣기만 하면, 누구나 손쉽게 마리오 게임을 만들 수 있습니다.👍
- 먼저 예제파일에 포함된 매크로 사용 설정을 하겠습니다. 다운받은 예제파일을 우클릭한 후, [속성]으로 이동합니다. 속성창 하단에 '차단 해제' 옵션이 있을 경우, 옵션을 체크하고 [확인] 버튼을 클릭하여 파일을 실행합니다. 만약 '차단 해제' 옵션이 보이지 않는다면, 파일을 바로 실행합니다.
파일 속성에서 '차단해제' 옵션을 체크합니다.
- 파일을 실행하면 엑셀화면 오른쪽 상단에 [콘텐츠 사용] 버튼이 표시됩니다. [콘텐츠 사용] 버튼을 클릭하여 매크로를 활성화합니다.
콘텐츠 사용 버튼을 클릭해서 매크로를 활성화합니다.
- 상단의 [개발도구] 탭을 클릭한 후, [매크로] 버튼을 클릭합니다.
개발도구 탭에서 매크로 버튼을 클릭합니다.
오빠두Tip : 만약 개발도구 탭이 보이지 않을 경우, 리본 메뉴를
우클릭 - '리본 메뉴 사용자 지정'에서 개발도구를 활성화합니다.

- 매크로 목록에서 '마리오 그리기'를 실행하면 시트에 마리오가 그려집니다!
매크로 목록에서 '마리오 그리기' 매크로를 실행합니다.
- 이제 마리오를 이동하는 코드를 직접 추가해보겠습니다. [개발도구]탭 - [Visual Basic] 버튼을 클릭하여 매크로 편집기를 실행합니다.
[개발도구] 탭 - [Visual Basic] 버튼을 클릭합니다.
- 매크로 편집기가 실행되면, 왼쪽의 [프로젝트] 창에서 Sheet2(마리오만들기) 시트를 더블클릭하여 코드 편집기를 엽니다.
프로젝트 창에서 '마리오만들기' 시트를 더블클릭하여 코드 편집기를 엽니다.
- 코드 편집기 안에, 아래 코드를 복사하여 붙여넣기 합니다.
아래 코드를 복사하여 편집기 안에 붙여넣기 합니다.
Option Explicit
' keypressapi 클래스와 WithEvents 변수를 사용해 키 입력 이벤트를 감지할 수 있도록 설정
Dim WithEvents CKeyWatcher As keypressapi
' 게임 시작을 위한 초기 설정을 하는 서브루틴
Sub 게임시작()
' 게임을 위한 초기 변수 설정 및 출력
ActiveSheet.Range("D21").Select
Set pointRng = ActiveSheet.Range("D21")
sheet_init
Facing = True
Boxing = False
delay = False
no_sound = False
is_print = True
Time30 = DateAdd("s", 30, Now()) ' 30초 제한 설정
Limit = 30
Point = 0
' CKeyWatcher가 없을 경우 새로 설정하고 키 입력 감지 시작
If CKeyWatcher Is Nothing Then
Set CKeyWatcher = New keypressapi
End If
CKeyWatcher.StartKeyPress
End Sub
' 게임 종료 시 호출되는 서브루틴
Sub 게임종료()
' CKeyWatcher가 설정되지 않았으면 종료
If CKeyWatcher Is Nothing Then Exit Sub
' 키 입력 감지 중지 및 배경 음악을 정지하고 새로운 소리 재생
CKeyWatcher.StopKeyPress
End Sub
' 워크시트가 활성화될 때 CKeyWatcher를 시작
Private Sub Worksheet_Activate()
If CKeyWatcher Is Nothing Then
Set CKeyWatcher = New keypressapi
End If
CKeyWatcher.StartKeyPress
End Sub
' 워크시트 비활성화 시 CKeyWatcher를 중지
Private Sub Worksheet_Deactivate()
If CKeyWatcher Is Nothing Then Exit Sub
CKeyWatcher.StopKeyPress
End Sub
' 키 입력 이벤트 처리 서브루틴
Private Sub CKeyWatcher_KeyPressed(ByVal KeyAscii As LongPtr, _
ByVal KeyCode As LongPtr, _
ByVal Target As Range, _
Cancel As Boolean)
' ASCII 코드 변환 변수
Dim lngKeyAscii As Long
' 입력된 키 ASCII 코드를 정수로 변환
lngKeyAscii = CLng(KeyAscii)
' 각 키에 따른 동작 처리
Select Case Chr(lngKeyAscii)
Case "'"
' 오른쪽 화살표 입력 시 Mario 오른쪽 이동
If pointRng.Column = 76 Then Exit Sub
Facing = True
MarioClear pointRng ' 현재 위치 초기화
Set pointRng = pointRng.Offset(0, 1) ' 오른쪽으로 이동
Mario_RW pointRng ' Mario 오른쪽 이미지 출력
Case "%"
' 왼쪽 화살표 입력 시 Mario 왼쪽 이동
If pointRng.Column = 1 Then Exit Sub
Facing = False
MarioClear pointRng ' 현재 위치 초기화
Set pointRng = pointRng.Offset(0, -1) ' 왼쪽으로 이동
Mario_LW pointRng ' Mario 왼쪽 이미지 출력
Case "&"
' 위쪽 화살표 입력 시 점프
If Jump = False Then
Jump = True
MarioJump ' 점프 동작 실행
End If
End Select
End Sub
- 매크로 편집기를 종료한 후 [개발도구] - [매크로] 를 클릭하면, '게임 시작'과 '게임 종료' 매크로가 추가된 것을 확인할 수 있습니다. 이어서 '게임 시작' 매크로를 실행합니다.
매크로 목록에서 '게임 시작' 매크로를 실행합니다.
- 이제 키보드에서 좌/우/위 방향키를 누르면 마리오가 움직이고 점프합니다!
움직이는 마리오가 완성됩니다.
- 마지막으로 버튼을 클릭해서 게임을 시작하고 종료하는 기능을 추가합니다. [게임 시작] 버튼을 우클릭 - [매크로 지정]으로 이동합니다.
게임 시작 버튼을 우클릭 - 매크로 지정으로 이동합니다.
- 매크로 목록에서 '게임 시작' 매크로를 선택 후 등록합니다. 동일한 방법으로 [게임 종료] 버튼에도 매크로를 등록합니다.
매크로 목록에서 게임 시작 매크로를 버튼에 등록합니다.
- 이제 버튼을 클릭해서 게임을 시작하거나 종료할 수 있습니다. 완성된 마리오 게임은 아래 회원 자료실을 확인해주세요!😆