ExcelVBAで小学生の娘の為に、英語の問題をランダムに出すゲームを作りました。
娘の要望と聞きながら、答えは隠したら?とか読み方あった方がいいなぁとか、あーでもないこーでもないとやるの楽しかったです。
■事前準備
- このゲームの作成には、Office365のExcelを使用しています。
- Excelのメニューに「開発」というタブが出ていない場合は、
- 「ファイル」>「オプション」>「リボンのユーザー設定」と進み、「開発」を追加してください。
- 詳しいやり方は、VBA 開発タブ|ぺんぺんの日常 (pen-study.com) をご確認ください。
■作成手順
<1>各シートの設定
最初に「問題」「設定」「表示画面」シートを作成し、それぞれのシートに設定をしていきましょう。
「問題」シートを設定します。
1.C列の部分「No.」となっているところが、問題番号です。
B列のところで、問題を出す出さないと選択できるようになっています。
問題を出す場合は、C列では、B列が「■」の時は、No.を上のセル+1、
「×」のときは上のセルをそのまま入れるようにしています。
※「設定」シートでは、このNo.を上から探して問題を決定するので、
そのような仕組みにしています。
2.D/E/F列に英語とよみかたとこたえを書きます。
よみかたは、娘がまだ英語を読むのが苦手なので、つけてほしいといわれて
ひらがなを使って、なるべく発音に近い読み方を付けました。
もう少し成長したら発音記号をいれてあげるといいかも。
「設定」シートを設定します。
個数:B6セルに、下記の通りいれます。問題が増えても対応できるように、出題数を数えています。
=COUNTIF(問題!B:B,”■”)
ランダム数:C6セルに、下記の通り入れます。1~個数(ここでは31)の間でランダムの数字を出します。
=IF(B6<>0,RANDBETWEEN(1,B6),”X”)
エラーメッセージ:問題が見つからないときに出したいの文字列を入れます。「問題」シートで全部「×」を選ばれた場合にこのメッセージが出ます。
「表示画面」シート
1.B4セルには、下記の通り入れます。「設定」画面でランダムに選ばれた数字の行の英文を出しています。 C列~F列を選択し、1列目(C列)の数字が合致したら、同じ行の2列目(D列)を表示します。ない場合は、「設定」シートのD6セルの値を表示します。
=IFERROR(VLOOKUP(設定!C6,問題!C:F,2,FALSE),設定!D6)
2.C4セルには、下記の通り入れます。1.と同じですが、3列目(E列)を表示しています。ない場合は、空欄になります。
=IFERROR(VLOOKUP(設定!C6,問題!C:F,3,FALSE),””)
3.D4セルには、下記の通り入れます。1.と同じですが、4列目(F列)を表示しています。ない場合は、空欄になります。
=IFERROR(VLOOKUP(設定!C6,問題!C:F,4,FALSE),””)
<2>マクロの設定
次にマクロを使って動きを指定していきます。
マクロを作ります。
まず、Excelのメニューから「開発」>「Visual Basic」を選びます。
「Module1」という標準モジュールができ、テキストが入力できる小窓が開きます。
そこに、下記の通り書きます。
下記を貼り付け用です。
Sub C列隠し()
‘ C列隠し Macro
Columns(“C:C”).Select
Selection.EntireColumn.Hidden = True
Worksheets(“表示画面”).Range(“A1”).Select
End Sub
Sub D列隠し()
‘ D列隠し Macro
Columns(“D:D”).Select
Selection.EntireColumn.Hidden = True
Worksheets(“表示画面”).Range(“A1”).Select
End Sub
Sub C列表示()
‘ C列表示 Macro
Columns(“C:C”).EntireColumn.AutoFit
Worksheets(“表示画面”).Range(“A1”).Select
End Sub
Sub D列表示()
‘ D表示 Macro
Columns(“D:D”).EntireColumn.AutoFit
Worksheets(“表示画面”).Range(“A1”).Select
End Sub
Sub 次の問題()
Call D列隠し
Worksheets(“表示画面”).Range(“B4”).Select
Worksheets(“表示画面”).Range(“A1”) = “”
End Sub
名前のままなのですが、簡単に解説すると、
C列隠し() ⇒C列を選択し、非表示にして、A1セルに移動
C列表示() ⇒C列を選択し、表示して、A1セルに移動
※D列も同じです。
次の問題() ⇒D列隠し(答えを隠す)を実行、B4を選択し、A1を選択。
終了したら、保存ボタンを押します。
この時、マクロ実行用にしますかというメッセージが出ることがあります。その場合OKにします。
(これにより、このエクセルは、拡張子が「.xlsm」となります。事前にこの形式で保存しておけばメッセージは出ません。)
<ボタンの設定>
最後に、ボタンを作成して、マクロを登録していきます。
ボタンを作成してマクロを割り当てます。
ボタンアイコンを選びます。図形描画の要領で、自分の好きな大きさでボタンを描きます。(ボタンの大きさは後から変えられるので適当で大丈夫です。)すると、自動で「マクロの登録」画面が開きます。
先ほど、標準モジュールで設定した、マクロがひとつずつ表示されているので、各ボタンに一つずつ振り分けていきましょう。
①「次の問題➡」ボタン
マクロ名:「次の問題」を選択し、「OK」押下。すると、ボタンが作成されます。
「ボタン1」などと表示されたボタンができるので、右クリック>テキストの編集 を選んで、「次の問題➡」という名前に変えます。
②「読み方隠す」ボタン
マクロ名:「C列隠し」を選択し、「OK」押下
ボタン名を①と同様に操作し「読み方隠す」に変更
③「読み方見る」ボタン
マクロ名:「C列表示」を選択し、「OK」押下
ボタン名を1.と同様に操作し「読み方見る」に変更
④「答え見る」ボタン
マクロ名:「D列表示」を選択し、「OK」押下
ボタン名を1.と同様に操作し「答え見る」に変更
これで、できあがりです!
表示画面は、D4セルに条件付き書式を使って、だいだいのときは橙色になるようにしたりしました。この辺はお好みですね。
- ★遊び方★
- 「次の問題➡」ボタンを押すと、B4セルに問題が出ます。答えを言ってもらい、せいかいは~???と言いながら、「答え見る」ボタンを押すと盛り上がりますよ。
- 読み方を隠したい場合は、「読み方隠す」。表示したい場合は「読み方見る」ボタンを押します。
以上。VBAを使ったお勉強ゲームの作り方でした。
英語に限らず色々な問題を入れることができるので、色々改造して楽しんでみてください。
小学生もプログラミングを授業でしているので、こんな風に一緒に仕組みを考えるのも良いお勉強になりますよね。そして、お母さんすごーいとなるのが嬉しい。笑
なにより、何を作ろうかなぁと子どもと考えるのが楽しいですよね。