[[20121102150111]] 『タイマー実行中の中断&終了について』(まき) ページの最後に飛ぶ

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

 

『タイマー実行中の中断&終了について』(まき)

OS:Windows7 Pro 64bit、 EXCEL2003

 いつも色々参考にさせて頂いております。
 現在開始ボタンを押して、セルに開始時間を表示させるマクロを組んでいます。
 セルには時間表示されますが、マクロが動いている最中に中断や完了ボタンを
 押す事が出来ません。(マウスがクルクル回ってしまいボタンが押せない。)

 現在のマクロ(抜粋は)次の通りです。ご伝授お願い致します。

 Option Explicit
 Private finishTime As Variant, 累計時間 As Date, EndFlg As Boolean
 Private 開始時間 As Date, 中断時間 As Date, 完了時間 As Date, 累計 As Variant

 Private Sub 施工開始_Click()

   '時間計測開始
    StartTime = Timer
    開始時間 = Time
    累計 = Time
    Do                                              '中断/完了ボタンが押されるまでLOOP
        DoEvents                                    ' 他のプロセスに明け渡します。
        累計時間 = Time
        Application.ScreenUpdating = True           '画面を更新する
        '現在値欄時間表示
        Me.Range("B1") = 累計時間 - 開始時間
        Application.ScreenUpdating = False          '画面を更新しない
        If PauseFlg = True Then GoTo 中断処理       '中断時処理
        If EndFlg = True Then Exit Do               '終了時処理
        Do While Timer < 累計 + 1
            DoEvents
        Loop
        累計 = 累計 + 1
    Loop

自己レスです。

動作を考え、シート画面の切替をOFFしようとしました。所々に「Application.ScreenUpdating = False」があった為、制御出来ませんでした。

参考になるか分かりませんが、次の様に修正致しました。

 Option Explicit
 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

 Private Sub 施工開始_Click()
    '時間計測開始
    StartTime = Timer
    開始時間 = Time
    累計 = Time
 Dim nw As Double

    PauseFlg = True
    EndFlg = True
    完了Flg = False

    nw = Now
    MsgBox EndFlg
    Do
        DoEvents
        Sheet2.Range("B1").Value = Format(Now() - nw, "h:mm:ss")
        Sleep 100
        If PauseFlg = False Then GoTo 中断処理          '中断時処理
        If EndFlg = False Then
            完了Flg = True
            Exit Do
        End If
    Loop

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.