Excel 2007のセルA1に時計を表示したいと思います。NOW()とTODAY()に精通していますが、1分ごとに更新されません。時計のようにね。h:mmの現在の時刻をセルA1に入れたいだけです。これは可能ですか?
この時計から、アクティビティX、Y、Zを最後に実行してからどのくらいの時間が経過したかなどの計算をさらに行います。SOに感謝します。
上記のコメントで参照したコードが見つかりました。それをテストするには、これを行います:
Sheet1
、セルの高さと幅を変更します。A1
Start Timer
シートのボタンを右クリックして、をクリックしますAssign Macros
。StartTimer
マクロを選択します。End Timer
シートのボタンを右クリックして、をクリックしますAssign Macros
。EndTimer
マクロを選択します。次に、[タイマーの開始]ボタンをクリックすると、セルに時刻が更新されていることがわかりますA1
。時間の更新を停止するには、[タイマーの終了]ボタンをクリックします。
コード
Public Declare Function SetTimer Lib "user32" ( _
ByVal HWnd As Long, ByVal nIDEvent As Long, _
ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" ( _
ByVal HWnd As Long, ByVal nIDEvent As Long) As Long
Public TimerID As Long, TimerSeconds As Single, tim As Boolean
Dim Counter As Long
'~~> Start Timer
Sub StartTimer()
'~~ Set the timer for 1 second
TimerSeconds = 1
TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
End Sub
'~~> End Timer
Sub EndTimer()
On Error Resume Next
KillTimer 0&, TimerID
End Sub
Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, _
ByVal nIDEvent As Long, ByVal dwTimer As Long)
'~~> Update value in Sheet 1
Sheet1.Range("A1").Value = Time
End Sub
スナップショット
以下のコードを参照してください(この投稿から取得)
このコードをVBAのモジュールに配置します([開発者]タブ-> [Visual Basic])。
Dim TimerActive As Boolean
Sub StartTimer()
Start_Timer
End Sub
Private Sub Start_Timer()
TimerActive = True
Application.OnTime Now() + TimeValue("00:01:00"), "Timer"
End Sub
Private Sub Stop_Timer()
TimerActive = False
End Sub
Private Sub Timer()
If TimerActive Then
ActiveSheet.Cells(1, 1).Value = Time
Application.OnTime Now() + TimeValue("00:01:00"), "Timer"
End If
End Sub
VisualBasicエディターのWorkbookVisualBasic "This.Workbook"クラスに以下のコードを追加することにより、ワークブックが開いたときに "StartTimer"関数を呼び出し、毎分繰り返すことができます。
Private Sub Workbook_Open()
Module1.StartTimer
End Sub
これで、1分が経過するたびにタイマープロシージャが呼び出され、セルA1が現在の時刻と等しくなるように設定されます。