3

Excel 2007のセルA1に時計を表示したいと思います。NOW()とTODAY()に精通していますが、1分ごとに更新されません。時計のようにね。h:mmの現在の時刻をセルA1に入れたいだけです。これは可能ですか?

この時計から、アクティビティX、Y、Zを最後に実行してからどのくらいの時間が経過したかなどの計算をさらに行います。SOに感謝します。

4

2 に答える 2

8

上記のコメントで参照したコードが見つかりました。それをテストするには、これを行います:

  1. 以下のスナップショットに示すようにSheet1、セルの高さと幅を変更します。A1
  2. セルを右クリックしてフォーマットし、時間フォーマットを表示します
  3. ワークシートに2つのボタン(フォームコントロール)を追加し、スナップショットに示されているように名前を付けます
  4. このコードをモジュールに貼り付けます
  5. Start Timerシートのボタンを右クリックして、をクリックしますAssign MacrosStartTimerマクロを選択します。
  6. End Timerシートのボタンを右クリックして、をクリックしますAssign MacrosEndTimerマクロを選択します。

次に、[タイマーの開始]ボタンをクリックすると、セルに時刻が更新されていることがわかります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

スナップショット

ここに画像の説明を入力してください

于 2012-08-08T15:29:41.887 に答える
6

以下のコードを参照してください(この投稿から取得

このコードを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が現在の時刻と等しくなるように設定されます。

于 2012-08-08T15:26:43.937 に答える