同じようなものは作ったことがありますが、掲示板で公開するスペースが足りないような気がします。ヒントになる部分だけ触れておきます。
大事な部分は、たぶん、ご質問者さんが想像しない所だと思います。それは、問題をランダムに重複なく出すところです。それが出来なければ、完成しません。この部分は以下では書かれていません。一般的にはアルゴリズムが必要ですが、別にシートを用意してもよいと思います。
>読み仮名を入力するとき、エンターを打たなくても採点してくれるところが機能的です。
一定の時間内に、入力した所をチェックすればよいのですが、TextBoxがよいのではないかと思います。そんなに大した問題ではありません。以下は時間は15秒と大目に取っています。改行を入れれば、途中で解答チェックをしますが、間違っていれば、TextBox内がクリアされます。
以下、簡単なサンプルコードです。VBAが多少経験ある人なら、誰でも書けるような内容です。
・問題点は、TextBox等では、IMEのコントロールで動きが制約される可能性があります。
・タイムアウトのカウントは、もう少し難しいことを考えなくてはなりません。
シート1
コントロールツール
CommandButton1 ...1個
TextBox1 ...1個
場所は適当に置きます。
使用するセル
A1, C1
セルの高さと幅
ピクセル数 80 × 100
マクロは、シートモジュール(Sheet1)
'//
Dim myTime As Date
Dim cnt As Integer
Dim i As Integer
Dim arKan As Variant
Dim arFuri As Variant
'問題
Const Kanjis = "未曾有,嚥下,声高,東風,作務衣"
'解答
Const Furiganas = "みぞう,えんげ,こわだか,こち,さむえ"
Private Sub CommandButton1_Click()
cnt = 0: i = 0
TextBox1.Text = ""
arKan = Split(Kanjis, ",")
arFuri = Split(Furiganas, ",")
With Range("A1", "C1")
.ClearContents
.ClearFormats
End With
Range("A1").Font.Size = 20
Range("c1").Font.Size = 40
TextBox1.IMEMode = fmIMEModeHiragana
myTime = Now + TimeSerial(0, 0, 15)
Call SetQuestion
If i > UBound(arKan) + 1 Then
Range("A1").ClearContents
TextBox1.Text = ""
End If
End Sub
Private Sub SetQuestion()
TextBox1.Text = ""
Range("A1").Value = arKan(i)
myTime = Now + TimeSerial(0, 0, 5)
TextBox1.Activate
Application.OnTime myTime, Me.Name & ".CheckAnswer"
End Sub
'続く
お礼
詳しく回答をいただきありがとうございます。 しばらく、考えさせていただきましたが、私には難しすぎました。 今しばらく勉強してから挑戦いたします。