エクセルバージョン
マイクロソフト365
今回は受験やテストなどを控えてる学生さんや外国後を覚えたいと思っている方が効率よく勉強できるように、単語などをランダム表示させて勉強ができる方法を解説していきたいと思います。
【作成後】
一瞬で英語をランダム表示させて学習できます。
それではいってみましょう!
内容
動作内容
➀A列とB列に日本語と英単語を入力します。
➁マクロを実行するとA列とB列の内容がD列とE列にランダムに日本語と英単語に並び変わります。
VBAサンプル
全てコピペで即実行できます(*゚▽゚)ノ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | Option Explicit '定数 Const STARTROW As Integer = 2 'データの開始行を指定 Const DATACOL As Integer = 1 'データの列を指定 Const WRIGHTCOL As Integer = 4 '書込み列を指定 Sub 英単語をランダム表示させる() '変数 Dim lastRow, dataCnt, rowNum, i, rndNum, cnt As Integer Dim rng, dataRange As Range '最終行番号取得 lastRow = Cells(Rows.Count, DATACOL).End(xlUp).Row 'データ数取得 dataCnt = lastRow - STARTROW + 1 'データ範囲 Set dataRange = Range(Cells(STARTROW, DATACOL), Cells(lastRow, DATACOL)) dataRange.Select 'データ消去 Columns(WRIGHTCOL).ClearContents Columns(WRIGHTCOL + 1).ClearContents '配列作成 ReDim dataAry(STARTROW To lastRow) As Integer '乱数初期化 Randomize '配列数分、繰り返す For i = 0 To dataCnt - 1 '乱数を作成して配列要素が1の間はループさせ重複しないようにする Do rndNum = Int(Rnd * dataCnt) + STARTROW '乱数生成 cnt = cnt + 1 '永久ループ回避 If cnt >= dataCnt * 10 Then Exit Sub End If Loop Until dataAry(rndNum) = 0 'セルに書込み Cells(i + 2, WRIGHTCOL) = Cells(rndNum, DATACOL) Cells(i + 2, WRIGHTCOL + 1) = Cells(rndNum, DATACOL + 1) 'セルに書き込んだ配列要素を1にする dataAry(rndNum) = 1 Next End Sub |
実行手順
①エクセルを開いてショートカットキーのAlt + F11でVBAを起動します。
②標準モジュールにサンプルコードをコピペします。
➂VBAの再生ボタンもしくはF5キーを押して実行します。
【実行】
下記のように実行するたびにランダムに並び変わります
シートにボタンを作成して実行したい場合は下記で解説しています。
VBAの乱数については下記で解説しています。
【エクセルVBA】重複しない乱数作成と指定範囲をランダム表示(Rnd)
まとめ
今回は英語などいつも規則正しい並びだと暗記するのに効率が悪いと思い、簡易的に並びを重複させずにランダムに表示して学習できるようにしてみました。
どういった学習方法がベストなのかということが、わかればもっと詳細に作成できるのですが今回はわからなかったのでとりあえず並びだけをランダムにするだけにしました。
こんなの作成してほしい!みたいなのがあればお気軽にメッセージをいただければ作成します(*^^)v
以上です。
英語や外国語関連
【エクセル】翻訳ツールで和英や英和の英単語など外国語を翻訳する
【エクセルVBA】英語や外国語の発音を自動で連続して読み上げる
【エクセルVBA】YouTube動画を一定間隔で繰り返し再生(API)