なぜ onTime メソッドの前に on Error Resume next ステートメントが必要なのか疑問に思っていました。明らかに、エラーが発生し、機能に影響を与えていないように見えるためですが、私はただ興味があります。
誰でも私を啓発できますか?
リクエストに応じて投稿されたコード!
これはワークシート モジュールにあります。
Const scrollRowName = "WindowScrollRow"
Dim ws As DataViewSheetClass
Public nextTime As Double
Public latestTime As Double
Private Sub startDog()
If Me.ProtectContents Then
nextTime = Now + TimeSerial(0, 0, 3)
If Me.ProtectContents Then Application.OnTime nextTime, Me.CodeName & ".kickDog"
End If
End Sub
Private Sub kickDog()
Static prevWsRow As Long
If Me Is ActiveSheet And Me.ProtectContents Then
wsRow = ActiveWindow.scrollRow
If wsRow <> prevWsRow Then
With Application
.screenUpdating = False
.StatusBar = "Calculating Formats"
.EnableEvents = False
scrollRow.Value2 = ActiveWindow.scrollRow
.EnableEvents = True
.StatusBar = False
prevWsRow = wsRow
.screenUpdating = True
End With
End If
Debug.Print timeStamp & ": Woof!" & Chr(9) & wsRow & Chr(9) & scrollRow.Value2
nextTime = Now + TimeSerial(0, 0, 3)
latestTime = nextTime + TimeSerial(0, 0, 10)
Application.OnTime nextTime, Me.CodeName & ".kickDog", latestTime
Else
killDog
End If
End Sub
Private Sub killDog()
On Error GoTo rebootObjects
scrollRow.Value2 = 1
On Error Resume Next
Application.OnTime nextTime, Me.CodeName & ".Worksheet_Deactivate", latestTime, False
On Error GoTo 0
Exit Sub
rebootObjects:
Set scrollRow = Me.Range(scrollRowName)
scrollRow.Value2 = 1
Resume Next
End Sub
Private Sub Worksheet_Activate()
Debug.Print timeStamp & ": " & "Summary Activate Start:" & Chr(9) & MicroTimer - t
t = MicroTimer
On Error GoTo enableAndExit
Set ws = New DataViewSheetClass
Application.EnableEvents = False
With ws
.addedActiveArea = Range("WeeksTable")
.addedActiveArea = Range("SummaryTotals")
.SparkTargetBehaviour = HEAVY
End With
enableAndExit:
Err.Clear
Application.EnableEvents = True
Set scrollRow = Me.Range(scrollRowName)
Set volatileRange = Me.Range(volatileRangeName)
startDog
Debug.Print timeStamp & ": " & "Summary Activated:" & Chr(9) & MicroTimer - t
t = MicroTimer
End Sub
Private Sub Worksheet_Deactivate()
killDog
Set ws = Nothing
End Sub