【コピペOK】タイマー付き!データ入力の練習ができるワークシートの作り方
この記事を書いている人 - WRITER -
Excel歴15年。パソコン講座を数十回以上実施し、就職や転職、復職の支援も行っています。Excelの基本操作から関数、マクロ、VBAまで仕事で便利だったことを中心に書いていますので、お仕事の時間短縮にお役に立てれば幸いです。
Excelのデータ入力を行う練習用のフォーマットについて解説です。
VBAを使用していますが、こちらは全てコピペ作成することができ、意味も画像付きで解説しています。
タイマー付きExcelデータ入力のワークシート作衛方法

完成図は上の画像のようになります。
まずは以下のようにフォーマットの下準備を行います。
色は何でもいいのですが、「開始」「終了」の部分は図形を挿入します。(マクロのボタンでもOK)

VBAのコード入力
次に、Alt+F11で入力画面を開き、「標準モジュール」を挿入します。

右側の部分に以下のコードをコピペします。
|
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 56 57 |
Option Explicit Dim startTime As Double '------------------------- ' タイム計測開始 '------------------------- Sub StartTimer() ' 開始時間を記録 startTime = Timer ' 入力欄をクリア Range("B4").Value = "" Range("B6").Value = "" Range("B7").Value = "" Range("B8").Value = "" MsgBox "計測を開始します。入力を始めてください。", vbInformation End Sub '------------------------- ' 判定+タイム計測終了 '------------------------- Sub EndTimer() Dim targetText As String Dim userInput As String Dim elapsed As Double Dim missCount As Long Dim i As Long ' お題と入力値を取得 targetText = Range("B2").Value userInput = Range("B4").Value ' 所要時間 elapsed = Timer - startTime Range("B8").Value = Format(elapsed, "0.00") & " 秒" ' 正誤判定 If userInput = targetText Then Range("B6").Value = "正解" Range("B6").Font.Color = RGB(0, 112, 192) Else Range("B6").Value = "不一致" Range("B6").Font.Color = RGB(192, 0, 0) End If ' ミス数カウント(文字ごとの差分) missCount = Levenshtein(targetText, userInput) Range("B7").Value = missCount & " 文字" MsgBox "判定が完了しました。", vbInformation End Sub |
ミスの数を改善するためコード追記
実際にやってみると分かるのですが、例えば「サンプル株式会社」に対して「サンプル式会社と入力すると、ミスの数が4文字になります。
しかし、実際には1文字抜けているだけなので、ミスの数を1文字にしようと思うと以下のコードも追記します。
|
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 |
'----------------------------------------- ' レーベンシュタイン距離(編集距離) '----------------------------------------- Function Levenshtein(str1 As String, str2 As String) As Long Dim i As Long, j As Long Dim d() As Long Dim s1 As Long, s2 As Long Dim cost As Long s1 = Len(str1) s2 = Len(str2) ReDim d(0 To s1, 0 To s2) For i = 0 To s1 d(i, 0) = i Next i For j = 0 To s2 d(0, j) = j Next j For i = 1 To s1 For j = 1 To s2 If Mid(str1, i, 1) = Mid(str2, j, 1) Then cost = 0 Else cost = 1 End If d(i, j) = Application.Min( _ d(i - 1, j) + 1, _ d(i, j - 1) + 1, _ d(i - 1, j - 1) + cost _ ) Next j Next i Levenshtein = d(s1, s2) End Function |
タイマー付きフォーマット完成図
開始をクリックしたらタイムがスタートし、終了を押したら完了です。
完成したら以下のようになります。

まとめ
今回は簡単なタイマー付きフォーマットを作りました。
実務で応用するとなるともっと変更が必要だと思いますが、是非参考にしてみましょう。
この記事を書いている人 - WRITER -
Excel歴15年。パソコン講座を数十回以上実施し、就職や転職、復職の支援も行っています。Excelの基本操作から関数、マクロ、VBAまで仕事で便利だったことを中心に書いていますので、お仕事の時間短縮にお役に立てれば幸いです。