【Excel VBA】10行くらいでExcel英単語アプリを作ってみた

2015年6月30日

エクセル

なぜかIT系のお仕事では万能ツールとして親しまれているMicrosoft Excelさん。フレキシブルな方眼紙としてプロジェクトの提案資料や仕様書の作成に使用されるだけでなくシステムの一部として帳票印刷に使われていたりと、よほど大規模なシステムでもない限りこれだけで何でもできてしまいそうな優秀な存在です。

今回は、ちょっとした練習にExcel VBAを使って英単語アプリを作って見ました。10行で作ろうとしたらちょっとオーバーしました。惜しい。

動作環境

  • Microsoft Office 365 Soloを使用しています。
  • WindowsでもMacでも動きますが、Mac版の方はなぜかマクロが実行できないことがありましたのでWindows版の方が安定しているようです。

 

まずはレイアウト

使うシートは2つです。1つは「出題シート」で、勉強するときはこちらを使用します。もう一つは「問題シート」で、こちらは問題に使う英単語とその和訳を登録します。ではそれぞれ作っていきましょう。

出題シートの作成

post-416_01

シート名を「出題シート」にしたらB2のセルに「No」、B3に「問題」、B4には「答え」の見出しを入れます。問題と答えが表示されるC2〜C4のセルを含めて罫線で体裁を整え、図形を「次の問題」、「答えを見る」用の2つ作成します。図形はマクロを登録できるものなら何でも大丈夫です。

これで出題シートは完成です。

 

 

問題シート

post-416_02次にもう1つ「問題シート」という名前のシートを作ります。

まずはA1のセルに「回数」、C1には「No」、D1には「問題」、E1に「回答」を入力して見出しを作ります。

次に問題の個数を把握できるようにA2のセルに以下の式を入力します。マイナス1しているのは最初の行が見出し用なのでその分を引いています。

 

=COUNTA(D:D)-1

 

次に、問題と答えをD列とE列に入力しましょう。手入力が面倒な方はインターネットで検索するといろいろ出てくるので探してみてください。上の画像にあるサンプルは以下のリストを使用させて頂きました。

TOEICによく出てくる英単語100語リスト

 

最後に、問題に番号を付けておきます。C2のセルに以下の式を入力してください。ここでも最初の行が見出しなのでマイナス1しています。

=IF(D2= "", "", ROW()-1)

 

入力したら、C2を選択したときにセルの右下に現れる小さな点(フィルハンドル)を、D列の問題が登録されているセルの行まで真下にドラッグしていきます。すると自動的に連番が振られていきます。

 

マクロ作成

レイアウトの作成が終わったら、マクロを作成します。メニューの「ツール」-「マクロ」-「Visual Basic Editor」でマクロ編集画面を開いて、モジュールを作成します。

※作成方法がわからない場合は、「ツール」-「マクロ」-「新しいマクロを記録」を選んですぐに「ツール」-「マクロ」-「記録終了」を選ぶとサクっと作れます。

モジュールを作成したら、以下のコードを追加します。長く見えますが、実際に動くコードは10行くらいですよ。

Sub 次の問題()
'
' 次の問題 Macro
'
    ' 答えを非表示にする(文字色を白にする)
    Worksheets("出題シート").Cells(4, 3).Font.ColorIndex = 2

    ' データ個数を取得
    cnt = Worksheets("問題シート").Cells(2, 1)

    ' ランダムで呼び出すデータナンバーを決定する
    Randomize
    num = Int(Rnd() * cnt) + 2

    ' 出題No、問題、と答えと出題回数を取得
    no = Worksheets("問題シート").Cells(num, 3)
    q = Worksheets("問題シート").Cells(num, 4)
    a = Worksheets("問題シート").Cells(num, 5)

    ' 出題シートに表示する
    Worksheets("出題シート").Cells(2, 3) = no
    Worksheets("出題シート").Cells(3, 3) = q
    Worksheets("出題シート").Cells(4, 3) = a

End Sub

Sub 答えを見る()
'
' 答えを見る Macro
'
    ' 答えを表示する(文字色を黒にする)
    Worksheets("出題シート").Cells(4, 3).Font.ColorIndex = 1

End Sub

 

マクロをボタンに割り当て

post-416_03ここまでできたら、「出題シート」に作成した図形にマクロを登録して完了です。図形をcontrolキーを押しながらクリック、または右クリックでメニューを開き、「マクロの登録」を選択して「次の問題」、「答えを見る」のマクロをそれぞれのボタンに設定します。

 

 

これで完成!

post-416_04あとは実行するだけです。「次の問題」のマクロを登録した図形をクリックすると、英単語がランダムで表示されます。「答えを見る」をクリックして答え合わせしましょう。英単語が少ないと同じ問題ばっかり出てきますが、反復練習にはいいのかも。

 

 

おわりに

ちょっとカスタマイズすれば、単語が出題された回数とか、苦手な英語にチェックを付けるとかいろんな機能を拡張できますね。英語も記憶できてプログラムも覚えられて一石二鳥です。もしかしたらバージョン2が登場するかも?

Image by rawpixel.com