[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『タイピングの制限時間について』(おっとせい)
こんにちは。
最近VBAの勉強を始めた初心者です。
現在、ユーザーフォームを用いてタイピングのゲームを作成しております。
以下の流れの動作を行いたいのですが、思うようにいきません。
イメージしている動作は、
・フォームが開いたらMsgBoxで開始[OK/CANCEL]を知らせる。
・MsgBoxの"OK"を押すと同時にカウントダウンを開始する。
・制限時間内に問題を入力できたら"終了ボタン"を押す。
3秒後にMsgBoxで次の問題[OK/CANCEL]の表示がされる。
OKを押しリセットされたカウントダウンが表示される。
・制限時間内をオーバーしてしまったら、別のフォームが表示される。
という流れで繰り返したいです。
※動作を一つずつ行っているので、今は問題の表示は書いていません。
Dim cd As Integer cd= 300
If MsgBox("タイピングを開始する",vbOKCancel) <> vbOK Then Exit Sub End If
CommandButton1.Tag = False Do cd = cd - 1 Label1.Caption = cd Sleep 1000 DoEvents Loop
If CommandButton1.Tag = True Then
Exit Sub
Sleep 3000 MsgBox("次の問題です",vbOKCancel) <> vbOK Then cd = 300 Do cd = cd - 1 Label1.Caption = cd Sleep 1000 DoEvents Loop
If cd = 0 Then
UserForm2.Show End If
End Sub
めちゃくちゃなプログラムでお恥ずかしいですが、ご教示いただきたいです。
どうぞよろしくお願い致します。
< 使用 Excel:Excel2016、使用 OS:Windows8 >
とりあえず、Doループしていても抜けるための判定が無いとか、キー入力させたいのにSleep(宣言部分がありませんが、APIですよね?)するのはスレッド止めてしまうから反応悪くない?、とか…。
(???) 2017/05/22(月) 08:57
いきなりコードから入らず、もう少し、おっとせいさんのイメージする【タイピングのゲーム】なるもの そのもののシナリオというか流れを整理されたほうがいいかもしれません。
・MSGBOXで開始指示させるのか、開始ボタンクリックで始めるのか、それはいろいろ方法がありますけど どこかに問題が表示されるはずですよね? どこに表示させる予定なんでしょうか?
・開始後、その問題のテキストと同じテキストをどこかに打ち込むと思いますが、それは、どこを想定 していますか? シート上の特定のセル? ユーザーフォーム上のテキストボックス?
・タイプがおわったら 終了ボタンをおすということですね。 たんにボタンが押されたらよし ということではないですよね。 入力されたものと問題が一致しているかどうかのチェックは、もちろん行うわけですよね?
・終了ボタン後の判定、あるいは タイプ中の時間切れ、いずれにしても結果を出した後、 もうやめるのか、次の問題にすすむのかを指定しながら進んでいくと思いますが、 その際に【別のフォームが表示される】必要はあるのでしょうか? 同じフォームのままでは具合悪いのですか? (逆にいえば、問題が1000題あれば UserForm1 〜 UserForm1000 までの ユーザーフォームを準備するのですか?)
(β) 2017/05/22(月) 09:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.