0

一定時間非アクティブになった後に特定のシートにリンクするコードを作成しようとしています。非アクティブとは、シートを切り替えることではありません。シート 1 に切り替えたい (シート 1 はプレゼンテーションにリンクされており、スクリーンセーバーのように動作します)

これがThisWorkbookの私のコードです

Private nTime As Date

Const proc As String = "SelectIndex"

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)

    Call SetTimer

End Sub



Private Sub SetTimer()

    If nTime <> 0 Then

    Call Application.OnTime(EarliestTime:=nTime, Procedure:=proc, Schedule:=False)

    End If

    nTime = Now + TimeValue("00:00:05")

    Application.OnTime nTime, Procedure:=proc

End Sub

これは、誰かがデータを長時間入力しないとシートに移動するときにデータを入力するために機能しますが、データを入力するためのアクセス権がないために誰かがシートを切り替えていない場合は、シートを表示するだけです。

また、プレゼンテーションをキャンセルしてもう一度試すと、エラーが発生するのは一度だけです。

「実行時エラー '1004' オブジェクト '_Application' のメソッド 'OnTime' が失敗しました」

この 2 つの問題だけを克服する必要があります。誰かが J を助けてくれると本当にありがたいです

参考までに、手順SelectIndexはシート 1 に切り替える単なるマクロです。

4

1 に答える 1

1

質問を正しく理解していれば、Sheet_Activateイベント内でタイマーをトリガーできます。

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Call SetTimer   
End Sub
于 2012-09-06T09:32:43.023 に答える