- 公開日:
エクセルで暇つぶしになるVBAのゲームやツール
暇つぶしとして遊べるVBAのゲームを作成する方法をご紹介します。
VBAをあまり編集したことがない方でも分かりやすいように、手順内にコードを記載しています。
簡単なゲームを作成して、楽しく遊びましょう。
エクセルで暇つぶしになるVBAのゲームやツール
エクセルのVBA(マクロ)を使って、暇つぶしとして遊べるゲームやツールの作り方をご紹介します。
![開発タブについて](https://office-hack.com/wp-content/uploads/excel-vba-games-tools20.png)
VBAの編集は「開発タブ」から行います。
開発タブはデフォルトでは表示されていないため、以下の記事を参考に表示させましょう。
簡単にできる数あてゲーム
簡単にできる数あてゲームをマクロで作成する方法をご紹介します。
数あてゲームは、あらかじめマクロで自動生成した1から100までのランダムな数字を当てるゲームです。
ユーザーが数字を入力する度に「もっと高いです。」「もっと低いです。」とコメントを返します。
![セルに罫線を引く](https://office-hack.com/wp-content/uploads/excel-vba-games-tools2.png)
上記のような表を作成しておきます。
A1セルはユーザーが数字を入力するセル、A2セルは「もっと高いです。」などのコメントを表示するセルです。
A3とA4にはマクロボタンを設定するので、どんな大きさでも構いませんがセル幅を広めに設定しておきましょう。
![Visual Basicを選択する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools3.png)
次にマクロを設定します。
①「開発」タブ、②「Visual Basic」の順に選択します。
![標準モジュールを開く](https://office-hack.com/wp-content/uploads/excel-vba-games-tools4.png)
「Microsoft Visual Basic for Applications」というVBAの編集画面が表示されます。
①「新しい標準モジュール」、②「標準モジュール」の順に選択します。
![コードを貼り付ける](https://office-hack.com/wp-content/uploads/excel-vba-games-tools5.png)
以下のコードをコピーして貼り付けます。
上記の画像の緑色の文字は、各コードが何の動作を指定しているかを説明しているコメントです。コピー用のコードではコメントを省いています。
Option Explicit
Dim targetNumber As Integer
Dim attempts As Integer
Sub ゲーム開始()
targetNumber = Int((100 - 1 + 1) * Rnd + 1)
attempts = 0
Cells(1, 1).Value = ""
Cells(2, 1).Value = "ゲーム開始! 1から100までの数字を当ててください。"
End Sub
Sub 確認()
Dim guess As Integer
guess = Cells(1, 1).Value
attempts = attempts + 1
If guess < targetNumber Then
Cells(2, 1).Value = "もっと大きいです。"
ElseIf guess > targetNumber Then
Cells(2, 1).Value = "もっと小さいです。"
Else
Cells(2, 1).Value = "正解です! " & attempts & " 回で当たりました。"
End If
End Sub
ランダムに生成する数字を増やしたい場合は、7行目の「targetNumber = Int((100 - 1 + 1) * Rnd + 1)」の「100」の数字を任意の数字に変更しましょう。
![保存ボタンを押す](https://office-hack.com/wp-content/uploads/excel-vba-games-tools6.png)
コードを貼り付けたら、「保存」を選択します。
![マクロ有効ブックで保存する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools7.png)
「名前を付けて保存」ダイアログボックスが表示されます。
①任意の保存場所(例:デスクトップ)を選択します。
②ファイルの種類で「Excel マクロ有効ブック」を選択し、③「保存」ボタンを押します。
![ボタンを押す](https://office-hack.com/wp-content/uploads/excel-vba-games-tools8.png)
マクロが作成できました。次にマクロボタンを作成します。
①「開発」タブを選択します。
②「挿入」、③フォームコントロールの「ボタン(フォーム コントロール)」の順に選択します。
![ボタンを押す](https://office-hack.com/wp-content/uploads/excel-vba-games-tools9.png)
マウスポインターが十字マークになったら、任意の位置でドラッグしてボタンを描画します。
![マクロを設定してOKボタンを押す](https://office-hack.com/wp-content/uploads/excel-vba-games-tools10.png)
描画が終わると、「マクロの登録」ダイアログボックスが自動的に表示されます。
①作成したマクロ(例:ゲーム開始)を選択し、②「OK」ボタンを押します。
![テキストの編集を選択する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools11.png)
マクロボタンが作成できました。
ボタンの名前を変更する場合は、①マクロボタンを右クリックして、②「テキストの編集」を選択します。
![ゲーム開始と入力する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools12.png)
任意の名前(例:ゲーム開始)を入力します。
![確認ボタンも作成する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools14.png)
ゲーム開始ボタンが作成できました。
同様の操作で「確認」ボタンも作成しましょう。
![数字を入れて確認ボタンを押す](https://office-hack.com/wp-content/uploads/excel-vba-games-tools15.png)
ボタンを作成したら、ゲームで遊んでみましょう。
①まずは「ゲーム開始」ボタンを押します。
②「ゲーム開始!1から100までの数字を当ててください。」と表示されるので、A1セルに任意の数字(例:24)を入力します。
③「確認」ボタンを押します。
![コメントが表示される](https://office-hack.com/wp-content/uploads/excel-vba-games-tools16.png)
すると、A2セルにコメントが表示されます。
今回は答えよりも小さい数字を入力したということで、「もっと大きいです。」と表示されました。
![数字を確認する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools17.png)
さらに数字を入力して、数字をあてましょう。
①A1セルに数字を入力して、②「確認」ボタンを押します。
![コメントが表示される](https://office-hack.com/wp-content/uploads/excel-vba-games-tools18.png)
もう一度「もっと大きいです。」と表示されました。
引き続き数字を入力して、数字をあてましょう。
![数値が当たった場合の表示](https://office-hack.com/wp-content/uploads/excel-vba-games-tools19.png)
数字があたると「正解です!」というコメントが表示されます。
「○回で当たりました。」というメッセージで、正解までにかかった回数も知れます。
おみくじ
「大吉」「中吉」などの運勢がランダムで表示されるおみくじを作成します。
![コードを入力する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools21.png)
Visual Basicの画面を開いて、以下のコードをコピーして貼り付けます。
マクロの登録方法は、上記「簡単にできる数あてゲーム」セクションを参考にして下さい。
おみくじの結果を増やしたい場合は、「results = Array("大吉", "中吉", "小吉", "吉", "末吉", "凶", "大凶")」の中にダブルクォーテーションで囲った表記(例:"もっとがんばろう!"等)で項目を追加しましょう。
Option Explicit
Sub おみくじを引く()
Dim results As Variant
Dim index As Integer
results = Array("大吉", "中吉", "小吉", "吉", "末吉", "凶", "大凶")
Randomize
index = Int((UBound(results) - LBound(results) + 1) * Rnd + LBound(results))
MsgBox "今日の運勢は: " & results(index)
End Sub
![マクロを選択する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools24.png)
マクロを設定し保存したら、①「開発タブ」、②「マクロ」の順に選択します。
![マクロを実行する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools22.png)
「マクロ」ダイアログボックスが表示されます。
①「おみくじを引く」のマクロを選択し、②「実行」ボタンを押します。
![運勢がでる](https://office-hack.com/wp-content/uploads/excel-vba-games-tools23.png)
すると、ダイアログボックスで運勢の結果が表示されます。
日記ジェネレーター
日記を書くための「質問」をランダムで表示するジェネレーターを作成します。
![コードを貼り付ける](https://office-hack.com/wp-content/uploads/excel-vba-games-tools25.png)
以下のコードをコピーして貼り付けます。
マクロの登録方法は、上記「簡単にできる数あてゲーム」セクションを参考にして下さい。
日記の質問を増やしたい場合は、「questions = Array(」以降に他の項目と同じように入力しましょう。
Option Explicit
Dim questions As Variant
Dim currentQuestionIndex As Integer
Sub 質問()
questions = Array( _
"今日の出来事を振り返ってみて、印象に残ったことは何ですか?", _
"最近感じた喜びや楽しみは何ですか?", _
"最近感じた悲しみや苦しみは何ですか?", _
"今後の目標や計画について教えてください。", _
"自分の強みや良いところは何だと思いますか?", _
"自分をもっと改善したいところは何ですか?", _
"今日の反省点や後悔していることは何ですか?", _
"これから取り組みたいことや学びたいことは何ですか?" _
)
currentQuestionIndex = -1
Call 次の質問
End Sub
Sub 次の質問()
currentQuestionIndex = currentQuestionIndex + 1
If currentQuestionIndex > UBound(questions) Then
currentQuestionIndex = 0
End If
MsgBox questions(currentQuestionIndex), vbInformation, "日記ジェネレーター"
End Sub
![マクロを選択する](https://office-hack.com/wp-content/uploads/excel-vba-games-tools24.png)
マクロを設定し保存したら、①「開発タブ」、②「マクロ」の順に選択します。
![実行ボタンを押す](https://office-hack.com/wp-content/uploads/excel-vba-games-tools26.png)
「マクロ」ダイアログボックスが表示されます。
①「質問」のマクロを選択し、②「実行」ボタンを押します。
![メッセージが表示される](https://office-hack.com/wp-content/uploads/excel-vba-games-tools27.png)
すると、設定した質問からランダムで表示されます。
![実行ボタンを押す](https://office-hack.com/wp-content/uploads/excel-vba-games-tools28.png)
別の質問に答えたい場合は、再度「マクロ」ダイアログボックスが表示されます。
①「次の質問」のマクロを選択して、②「実行」ボタンを押します。
![別の質問が表示される](https://office-hack.com/wp-content/uploads/excel-vba-games-tools29.png)
別のメッセージが表示されます。