ExcelVBAで単語テストを自動作成する方法
ExcelVBAは、Excelのあらゆる単純作業を自動化することができます。
今回はVBAで、指定した出題範囲から単語テストをランダムで作成するVBAをご紹介します。
目次
単語テストのファイルを公開
単語テスト生成.xlsm - Google スプレッドシート
Excelファイルのアップロードができないため、
まずは上のスプレッドシートからExcelにシートをコピーしてください!
シート1.2はそれぞれ上の通りになっていますでしょうか?
シート名はそれぞれ変更可能です。
単語表には例として単語を入れていますが、書き換えてください!
また、単語テストのB列は最後に非表示にしますので、今は気にしないでください。
単語テスト自動作成のVBAコードの公開
以下のコードをVisual Basicに丸々コピペしてください!
Sub テスト()
Dim MaxNum As Long
Dim Minnum As Long
Dim flg() As Boolean
Dim num As Long
Dim i As Long
Dim Number() As Long
MaxNum = Worksheets(1).Range("E6").Value '←出題範囲の最大値
Minnum = Worksheets(1).Range("C6").Value '←出題範囲の最小値
ReDim Number(Minnum To MaxNum) As Long
ReDim flg(Minnum To MaxNum) As Boolean
Randomize
For i = Minnum To MaxNum
Do
num = Int*1をセルに書きだす処理 Worksheets(1).Range("B8:C27").ClearContents
'一度テストのセルに入っている文字を削除する。
For j = 8 To 27 'テストページのセルの行
Cells(j, 2).Value = Number(o)
o = o + 1
Cells(j, 3) = WorksheetFunction.VLookup(Cells(j, 2), SearchRange, 2, False)
'vlookupを使用し、英単語をいれる
If o > MaxNum Then
'出題範囲が20問を下回ってもエラーにならないコード
Exit Sub
End If
Next
End Sub
コードをコピペする場所
Visual Basicは「開発タブ」→「Visual Basic」→「挿入」→「標準モジュール」
の手順で「Module 1」が出てくると思うので、そこにコピペしましょう。
また、開発タブがない方は1分で表示できますので、以下の動画を参考にしてください!
コードの解説
Dim MaxNum As Long
Dim Minnum As Long
Dim flg() As Boolean
Dim num As Long
Dim i As Long
Dim Number() As Long
ここは変数の定義となりますので、無視してください。
MaxNum = Worksheets(1).Range("E6").Value '←出題範囲の最大値
Minnum = Worksheets(1).Range("C6").Value '←出題範囲の最小値
出題範囲を指定します。
E6が最大値、C6が最小値となります。
最大値と最小値が逆や同じ数値、空白、数値以外であればエラーとなりますので、
注意しましょう。
ReDim Number(Minnum To MaxNum) As Long
ReDim flg(Minnum To MaxNum) As Boolean
Randomize
変数の定義
For i = Minnum To MaxNum
Do
num = Int*2をセルに書きだす処理
これらも修正することはないと思うので、無視してください。
Worksheets(1).Range("B8:C27").ClearContents
'一度テストのセルに入っている文字を削除する。
For j = 8 To 27 'テストページのセルの行
B8:C27は、単語テストのNo1~No20を表します。
単語テストをNo10までにする場合や、行を削除する場合などは、
この数値を変更しなければいけません。
例)No10までにする場合
Worksheets(1).Range("B8:C17").ClearContents
For j = 8 To 17 'テストページのセルの行
テスト自動作成ボタンを作ろう
あと少しで単語テストの自動化ができます!
続いてはテストが自動で作成されるボタンを作ります。
「開発タブ」→「ボタン」を押し、ボタンを置きたい場所をクリックします。
先ほどコードを書いた「テスト」というマクロが表示されると思うので、
「テスト」を選択し、「OK」を押します。
適当な名前に変更しボタンを押すと、出題範囲から自動で単語テストが作成されました!
B列は単語の番号が入りますので、非表示にしてください!
まとめ
以上のように、VBAを使用すれば単語テストが自動で作成することができます。
これまで手動で入力していた作業も、VBAを使用すれば自動化することが可能です。
単語テスト以外にもこんなことを自動化して欲しい等のご要望があれば、ご相談ください!
VBAを使用すればどんなことでも圧倒的に効率化することができます。
excelの資料・データ作成をお手伝いします 高度な関数を使用し、excel作業をラクにします! | データ整理・集計・エクセル作成 | ココナラ
*1:MaxNum - Minnum + 1) * Rnd + Minnum)
If flg(num) = False Then
flg(num) = True
Number(i) = num
Exit Do
End If
Loop
Next i '重複しないランダムな数字を生成し終える
Dim j As Long
Dim o As Long
Dim SearchRange As Range 'vlookupの範囲を定義する
Set SearchRange = Worksheets(2).Range("A:C")
o = Minnum 'ここからは、生成した乱数(Number(
*2:MaxNum - Minnum + 1) * Rnd + Minnum)
If flg(num) = False Then
flg(num) = True
Number(i) = num
Exit Do
End If
Loop
Next i '重複しないランダムな数字を生成し終える
最小値から最大値までの値をランダムに並べるコードです。
これによって、ランダムに単語が出てくるようになります。
Dim j As Long
Dim o As Long
Dim SearchRange As Range 'vlookupの範囲を定義する
Set SearchRange = Worksheets(2).Range("A:C")
o = Minnum 'ここからは、生成した乱数(Number(