• 締切済み

excel vba フォーム DoEvent

Excel vba  下記のようにユーザーフォームでストップウォッチを動かしています。 計算問題のプログラムを動かし、指定問題数回答後、時間を表示して停止しようとしています。 問題点: ストップウォッチ起動後、セルに数字を入力しEnterを押してもUserFormに戻ってこず、時計は止まったままになります。 継続して時間を計測、表示する方法があればご教示お願いします。 Private Sub UserForm_Activate() Dim counttime As Variant Do While kentime > 0 counttime = Int((Timer - dblTimer) * 10) / 10 ‘小数点以下が“0”の時も“.0”の表示にする If Int(counttime) = counttime Then hyoujitime = Right(" " + CStr(counttime), 5) + ".0" Else hyoujitime = Right(" " + CStr(counttime), 7) End If Label1.Caption = hyoujitime DoEvents Loop End Sub

みんなの回答

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.2

> ”オートメーションエラー”が発生し時計が再起動しません。 そうですか…。 変数kentimeがいまいちどのようなものか不明でしたので とりあえず標準モジュールでグローバル変数にして コマンドボタンの以下のコードで動かしたり止めたりしてみましたが、それなりにエラーもなく動きました。 Sub ボタン1_Click() If kentime = 1 Then kentime = 0 Else kentime = 1 End If UserForm1.Hide UserForm1.Show End Sub

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.1

止めてその後再度動かしたい(タイマーの動作を見えるようにしたい)ということでしたら UserForm1.Hide UserForm1.Show のようにしてみてはいかがでしょう。

ken-nosuke
質問者

お礼

ありがとうございます。 userformのタイマーが止まった状態で hide や show を実行すると”オートメーションエラー”が発生し時計が再起動しません。 もう少し勉強してみます。  

関連するQ&A