[[20170521193902]] 『タイピングの制限時間について』(おっとせい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『タイピングの制限時間について』(おっとせい)

こんにちは。
最近VBAの勉強を始めた初心者です。

現在、ユーザーフォームを用いてタイピングのゲームを作成しております。
以下の流れの動作を行いたいのですが、思うようにいきません。

イメージしている動作は、
・フォームが開いたらMsgBoxで開始[OK/CANCEL]を知らせる。
・MsgBoxの"OK"を押すと同時にカウントダウンを開始する。
・制限時間内に問題を入力できたら"終了ボタン"を押す。
 3秒後にMsgBoxで次の問題[OK/CANCEL]の表示がされる。
 OKを押しリセットされたカウントダウンが表示される。
・制限時間内をオーバーしてしまったら、別のフォームが表示される。
という流れで繰り返したいです。

※動作を一つずつ行っているので、今は問題の表示は書いていません。


Private Sub UserForm_Activate()

 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.