Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Inhalt einer Zelle in Minutenabstand in einer Spalte auflisten

Gruppe

OnTime

Problem

Zelle A1 enthält eine DDE-Verknüpfung zu einem externen Programm, die sich in Minutenabstand aktualisiert. Wie kann ich die aktualisierten Daten minütlich in Spalte C zur späteren Weiterverwendung auflisten lassen? In Spalte B sollen das jeweils aktuelle Datum und Zeit eingetragen werden.

Lösung
Geben Sie den nachfolgenden Code in ein Standardmodul ein und weisen Sie ihn einer Schaltfläche zu.

StandardModule: basMain

Public Const gsMacro As String = "UpdateClock"
Public gdNextTime As Double

Sub StartClock()
   Dim iIntervall As Integer
   iIntervall = Range("E1").Value
   gdNextTime = Now + TimeSerial(0, 0, iIntervall)
   Application.OnTime earliesttime:=gdNextTime, _
      procedure:=gsMacro, schedule:=True
End Sub

Sub UpdateClock()
   Dim wks As Worksheet
   Dim iRow As Integer
   Set wks = ThisWorkbook.Worksheets("Tabelle1")
   iRow = wks.Cells(Rows.Count, 2).End(xlUp).Row + 1
   Cells(iRow, 2) = Now
   Cells(iRow, 3) = Range("A1").Value
   Call StartClock
End Sub

Sub StopClock()
   On Error Resume Next
   Application.OnTime earliesttime:=gdNextTime, _
      procedure:=gsMacro, schedule:=False
End Sub

ClassModule: DieseArbeitsmappe

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Call StopClock
End Sub