EXERCISE TOPIC▼
VBA EXERCISES▼
EXCEL VBA MACROS EXERCISES▼
Excel VBA Macros | Event handling exercise | Create a Basic Battleships Game using Worksheet Events
This exercise is provided to allow potential course delegates to choose the correct Wise Owl Microsoft training course, and may not be reproduced in whole or in part in any format without the prior written consent of Wise Owl.
You can learn how to do this exercise if you attend one of more of the courses listed below!
Software ==> | Excel VBA Macros (52 exercises) |
Version ==> | Any version of Excel |
Topic ==> | Event handling (4 exercises) |
Level ==> | Average difficulty |
Courses ==> | Excel VBA macros / Fast track Excel VBA |
You need a minimum screen resolution of about 700 pixels width to see our exercises. This is because they contain diagrams and tables which would not be viewable easily on a mobile phone or small laptop. Please use a larger tablet, notebook or desktop computer, or change your screen resolution settings.
Open the file called Battleship game.xlsx and create a subroutine which handles the SelectionChange event for Sheet1.

Use the drop down lists at the top of the code window.
The Target parameter returns a reference to the range that you select. Add a message box which tells the user the Address of the cell they have clicked on.

Test your code works by clicking on a cell.
Write an If statement which changes the fill colour of the cell to grey and shows a message if you click an empty cell.

Your message could resemble this one.
Add an Else clause which changes the fill colour to red and shows a message if the cell isn't empty.

You could expand the message to say what type of ship you hit. A = aircraft carrier, B = battleship, C = cruiser, D = destroyer and S = submarine.
The game won't work if a user attempts to select multiple cells. Add an If statement at the start of the subroutine which checks if the Count or CountLarge property of the target is greater than 1. If so, display a message and exit the subroutine.

That should slow down the cheaters.
You could add a separate subroutine to reset the game by changing the ColorIndex property of the cells to xlNone.
Take a few shots and then save and close the file.