ぺんぺんと一緒におぺんきょう
Study With me
VBA

ExcelVBAで小学生英語のランダム出題ゲームを作ろう

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を使ったお勉強ゲームの作り方でした。

英語に限らず色々な問題を入れることができるので、色々改造して楽しんでみてください。

小学生もプログラミングを授業でしているので、こんな風に一緒に仕組みを考えるのも良いお勉強になりますよね。そして、お母さんすごーいとなるのが嬉しい。笑

なにより、何を作ろうかなぁと子どもと考えるのが楽しいですよね。

ABOUT ME
ぺんぺん
娘二人のママです。20年以上システム開発会社で働いてます。 システム作るのも編み物も絵を描くことも好きです。