- 公開日:
エクセルで暇つぶしになるVBAのゲームやツール
暇つぶしとして遊べるVBAのゲームを作成する方法をご紹介します。
VBAをあまり編集したことがない方でも分かりやすいように、手順内にコードを記載しています。
簡単なゲームを作成して、楽しく遊びましょう。
エクセルで暇つぶしになるVBAのゲームやツール
エクセルのVBA(マクロ)を使って、暇つぶしとして遊べるゲームやツールの作り方をご紹介します。
VBAの編集は「開発タブ」から行います。
開発タブはデフォルトでは表示されていないため、以下の記事を参考に表示させましょう。
簡単にできる数あてゲーム
簡単にできる数あてゲームをマクロで作成する方法をご紹介します。
数あてゲームは、あらかじめマクロで自動生成した1から100までのランダムな数字を当てるゲームです。
ユーザーが数字を入力する度に「もっと高いです。」「もっと低いです。」とコメントを返します。
上記のような表を作成しておきます。
A1セルはユーザーが数字を入力するセル、A2セルは「もっと高いです。」などのコメントを表示するセルです。
A3とA4にはマクロボタンを設定するので、どんな大きさでも構いませんがセル幅を広めに設定しておきましょう。
次にマクロを設定します。
①「開発」タブ、②「Visual Basic」の順に選択します。
「Microsoft Visual Basic for Applications」というVBAの編集画面が表示されます。
①「新しい標準モジュール」、②「標準モジュール」の順に選択します。
以下のコードをコピーして貼り付けます。
上記の画像の緑色の文字は、各コードが何の動作を指定しているかを説明しているコメントです。コピー用のコードではコメントを省いています。
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」の数字を任意の数字に変更しましょう。
コードを貼り付けたら、「保存」を選択します。
「名前を付けて保存」ダイアログボックスが表示されます。
①任意の保存場所(例:デスクトップ)を選択します。
②ファイルの種類で「Excel マクロ有効ブック」を選択し、③「保存」ボタンを押します。
マクロが作成できました。次にマクロボタンを作成します。
①「開発」タブを選択します。
②「挿入」、③フォームコントロールの「ボタン(フォーム コントロール)」の順に選択します。
マウスポインターが十字マークになったら、任意の位置でドラッグしてボタンを描画します。
描画が終わると、「マクロの登録」ダイアログボックスが自動的に表示されます。
①作成したマクロ(例:ゲーム開始)を選択し、②「OK」ボタンを押します。
マクロボタンが作成できました。
ボタンの名前を変更する場合は、①マクロボタンを右クリックして、②「テキストの編集」を選択します。
任意の名前(例:ゲーム開始)を入力します。
ゲーム開始ボタンが作成できました。
同様の操作で「確認」ボタンも作成しましょう。
ボタンを作成したら、ゲームで遊んでみましょう。
①まずは「ゲーム開始」ボタンを押します。
②「ゲーム開始!1から100までの数字を当ててください。」と表示されるので、A1セルに任意の数字(例:24)を入力します。
③「確認」ボタンを押します。
すると、A2セルにコメントが表示されます。
今回は答えよりも小さい数字を入力したということで、「もっと大きいです。」と表示されました。
さらに数字を入力して、数字をあてましょう。
①A1セルに数字を入力して、②「確認」ボタンを押します。
もう一度「もっと大きいです。」と表示されました。
引き続き数字を入力して、数字をあてましょう。
数字があたると「正解です!」というコメントが表示されます。
「○回で当たりました。」というメッセージで、正解までにかかった回数も知れます。
おみくじ
「大吉」「中吉」などの運勢がランダムで表示されるおみくじを作成します。
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
マクロを設定し保存したら、①「開発タブ」、②「マクロ」の順に選択します。
「マクロ」ダイアログボックスが表示されます。
①「おみくじを引く」のマクロを選択し、②「実行」ボタンを押します。
すると、ダイアログボックスで運勢の結果が表示されます。
日記ジェネレーター
日記を書くための「質問」をランダムで表示するジェネレーターを作成します。
以下のコードをコピーして貼り付けます。
マクロの登録方法は、上記「簡単にできる数あてゲーム」セクションを参考にして下さい。
日記の質問を増やしたい場合は、「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
マクロを設定し保存したら、①「開発タブ」、②「マクロ」の順に選択します。
「マクロ」ダイアログボックスが表示されます。
①「質問」のマクロを選択し、②「実行」ボタンを押します。
すると、設定した質問からランダムで表示されます。
別の質問に答えたい場合は、再度「マクロ」ダイアログボックスが表示されます。
①「次の質問」のマクロを選択して、②「実行」ボタンを押します。
別のメッセージが表示されます。