Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Now

Now
08.09.2006 21:18:00
Thomas
Hallo,
ich möchte die aktuelle Uhrzeit in Zelle A1 setzen, und zwar mit Zehntelsekunden. Hierzu habe ich im Makro folgende Zeile:
Range("A1").Value = Now
Zelle A1 ist formatiert als "hh:mm:ss,0".
Nun ist es aber so, dass die Zehntelsekunden immer null sind! Warum?
Gebe ich hingegen von Hand in Zelle A1 die Funktion "=Jetzt()" ein (also ohne die Formatierung der Zelle zu verändern), erscheinen die Zehntelsekunden korrekt.
Wer kann helfen? Im voraus besten Dank!
Thomas
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Now
08.09.2006 21:26:59
Kurt
Hi,
das steht in der Hilfe:
Gibt einen Wert vom Typ Variant (Date) zurück, der das aktuelle Datum und die aktuelle Zeit aus den Einstellungen für das Systemdatum und die Systemzeit auf Ihrem Computer angibt.
Schau mal in der Sytemsteuerung nach, wie da die Zeit angezeigt wird.
mfg Kurt
Anzeige
AW: Now- Noch jemand eine Idee?
08.09.2006 21:36:52
Thomas
Hallo Kurt,
vielen Dank für den Hinweis, geht aber leider nicht.
Hier ein besseres Beispiel:

Sub Makro1()
Range("A1").FormulaR1C1 = "=NOW()"
Range("A2").Value = Now
End Sub

Zellen A1 und A2 sind gleich formatiert. In Zelle A1 bekomme ich die Zeit mit Zehntelsekunden korrekt angezeigt, in Zelle A2 sind sie immer null.
Hat noch jemand eine idee?
Vielen Dank für eure hilfe! :o)
Anzeige
AW: Now- Noch jemand eine Idee?
08.09.2006 21:54:49
Sigi
Hi Thomas,
nimm den Timer ...

Sub Zeit()
Dim Sek As Double
Range("A1").FormulaR1C1 = "=NOW()"
Range("A2").Value = CLng(Date) + VBA.Timer / 86400
End Sub

Gruß
Sigi
AW: Now FORMAT
08.09.2006 21:42:56
th.heinrich
hi auch Thomas,
hier aus der vba hilfe (xl97)
n diesem Beispiel werden verschiedene Einsatzmöglichkeiten der Format-Funktion zur Formatierung von Werten unter Verwendung von integrierten und benutzerdefinierten Formaten dargestellt. Die tatsächliche Ausgabe bei der Verwendung des Datum-Trennzeichens (/), Zeit-Trennzeichens (:) und der AM-/PM-Zeichenfolge hängt von dem aktuellen Gebietsschema Ihres Systems ab. Wenn Datums- oder Zeitangaben in der Entwicklungsumgebung gemacht werden, dann wird das kurze Datums- oder Zeitformat des Code-Gebietsschemas verwendet. Werden diese Angaben zur Laufzeit dargestellt, wird das kurze Datums- oder Zeitformat des System-Gebietsschemas verwendet. Dieses kann sich von dem Code-Gebietsschema unterscheiden. Hier wird "Deutschland" und "Deutsch" angenommen.
Zeit1 und Datum1 werden in der Entwicklungsumgebung mit den aktuellen Systemeinstellungen für das kurze Datums- und Zeitformat angezeigt.
Dim Zeit1, Datum1, ZF1
Zeit1 = #17:04:23#
Datum1 = #January 27, 1993#
' Aktuelle Systemzeit im langen Zeitformat des Systems bestimmen.
ZF1 = Format(Time, "Long Time")
' Aktuelles Systemdatum im langen Datumsformat des Systems bestimmen.
ZF1 = Format(Date, "Long Date")
ZF1 = Format(Zeit1, "h:m:s") ' Liefert "17:4:23".
ZF1 = Format(Zeit1, "hh:mm:ss AMPM") ' Liefert "17:04:23".
ZF1 = Format(Datum1, "dddd, mmm d yyyy") ' Liefert "Mittwoch,
' 27. Januar 1993".
' Wird kein Format angegeben, so wird eine Zeichenfolge geliefert.
ZF1 = Format(23) ' Liefert "23".
' Benutzerdefinierte Formate.
ZF1 = Format(5459.4, "##,##0.00") ' Liefert "5.459,40".
ZF1 = Format(334.9, "###0.00") ' Liefert "334,90".
ZF1 = Format(5, "0.00%") ' Liefert "500,00%".
ZF1 = Format("BANANE", " ZF1 = Format("birne", ">") ' Liefert "BIRNE".
gruss thomas
Anzeige
AW: Now FORMAT
08.09.2006 21:51:56
Thomas
Hallo Thomas,
danke, aber leider löst das auch nicht mein Problem (siehe meine Antwort bei Kurt).
Prinzipiell werden Zehntelsekunden ja angezeigt mit Jetzt() als Arbeitsblattfunktion, jedoch nicht, wenn die Zeit per Makro mit "Now" eingefügt wird...
Gruß,
Thomas
AW: Now
08.09.2006 21:58:39
EtoPHG
Hallo Thomas,
Die TimerFunktionen von VB und VBA geben nur ganze Sekunden zurück.
Wenn Du die Systemzeit per VBA in höherer Auflösung auslesen willst musst du auf die Windows API's zugreifen.
Gruss Hansueli
Anzeige
Now mit Millisekunden !
08.09.2006 22:47:13
EtoPHG
Hallo Thomas,
Hab Dir mal eine Function mit API-Call zusammengebastelt.
Setzte diesen Code in ein Modul.
Anschliessend kannst Du in beliebige Zelle (Nicht Formatieren) die Funktion =getActTime() einsetzen.

Option Explicit
Private Declare Sub GetLocalTime Lib "kernel32" _
(lpSystem As SYSTEMTIME)
Private Type SYSTEMTIME
wYear          As Integer
wMonth         As Integer
wDayOfWeek     As Integer
wDay           As Integer
wHour          As Integer
wMinute        As Integer
wSecond        As Integer
wMilliseconds  As Integer
End Type
Private sysLocalTime As SYSTEMTIME
Public Function getActTime() As String
Application.Volatile
GetLocalTime sysLocalTime
getActTime = sysLocalTime.wHour & ":" & _
Format(sysLocalTime.wMinute, "00") & ":" & _
Format(sysLocalTime.wSecond, "00") & "," & _
sysLocalTime.wMilliseconds
End Function

Gruss Hansueli
Anzeige
AW: Now
09.09.2006 00:42:08
K.Rola
Hallo,

Sub Zehntel()
With ActiveCell
.Formula = "=NOW()"
.NumberFormat = "hh:mm:ss.00"
.Value = .Value
End With
End Sub

Oder Zelladresse angeben.
Gruß K.Rola
AW: Now
09.09.2006 18:31:58
Thomas
Hallo K.Rola,
vielen Dank für deine Info! So ähnlich hatte ich es auch schon:

Sub Makro1()
Range("A1").FormulaR1C1 = "=NOW()"
Range("A2").Value = Now
End Sub

Zellen A1 und A2 sind gleich formatiert (Zeit mit Zehntel). In Zelle A1 bekomme ich die Zeit mit Zehntelsekunden korrekt angezeigt, in Zelle A2 sind sie immer null.
Hmm...
Anzeige
AW: Now
09.09.2006 19:22:37
K.Rola
Hallo,
machs nicht so ähnlich, sondern genau, wie ich es gepostet habe.
Gguß K.Rola
;
Anzeige

Infobox / Tutorial

Aktuelle Uhrzeit in Excel mit VBA und Millisekunden anzeigen


Schritt-für-Schritt-Anleitung

Um die aktuelle Uhrzeit mit Millisekunden in Excel anzuzeigen, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Option Explicit
    Private Declare Sub GetLocalTime Lib "kernel32" (lpSystem As SYSTEMTIME)
    Private Type SYSTEMTIME
       wYear As Integer
       wMonth As Integer
       wDayOfWeek As Integer
       wDay As Integer
       wHour As Integer
       wMinute As Integer
       wSecond As Integer
       wMilliseconds As Integer
    End Type
    Private sysLocalTime As SYSTEMTIME
    Public Function getActTime() As String
       Application.Volatile
       GetLocalTime sysLocalTime
       getActTime = sysLocalTime.wHour & ":" & _
                    Format(sysLocalTime.wMinute, "00") & ":" & _
                    Format(sysLocalTime.wSecond, "00") & "," & _
                    sysLocalTime.wMilliseconds
    End Function
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. In einer beliebigen Zelle kannst Du jetzt =getActTime() eingeben, um die tatsächliche Uhrzeit mit Millisekunden anzuzeigen.


Häufige Fehler und Lösungen

  • Problem: Die Zelle zeigt keine Millisekunden an, obwohl Du die Funktion =getActTime() verwendest.

    • Lösung: Stelle sicher, dass die Zelle nicht formatiert ist, bevor Du die Funktion einfügst. Vermeide eine spezielle Zeitformatierung, um sicherzustellen, dass die Millisekunden angezeigt werden.
  • Problem: Die Zeit in Zelle A2 ist immer null, wenn Du Now verwendest.

    • Lösung: Nutze stattdessen Application.Volatile in der Funktion, um sicherzustellen, dass die Zelle bei jeder Änderung aktualisiert wird.

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, gibt es auch Alternativen:

  1. Jetzt()-Funktion: Verwende die Formel =JETZT() in einer Zelle, um das aktuelle Datum und die Uhrzeit anzuzeigen. Beachte jedoch, dass diese Methode keine Millisekunden anzeigt.

  2. Timer-Funktion: Wenn Du die Zeit alle paar Sekunden aktualisieren möchtest, kannst Du die Timer-Funktion in VBA verwenden. Hier ist ein einfaches Beispiel:

    Sub Timer()
       Application.OnTime Now + TimeValue("00:00:01"), "Timer"
       Range("A1").Value = Now
    End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du Now und getActTime verwenden kannst:

  • Zelle A1 mit aktueller Zeit:

    Sub AktuelleZeit()
       Range("A1").Value = Now
       Range("A1").NumberFormat = "hh:mm:ss,0"
    End Sub
  • Zelle A2 mit Millisekunden:

    Sub ZeitMitMillisekunden()
       Range("A2").Value = getActTime()
    End Sub
  • Zellen formatieren:

    Sub Formatieren()
       With Range("A1:A2")
           .NumberFormat = "hh:mm:ss.00"
       End With
    End Sub

Tipps für Profis

  • Nutze die Format-Funktion in VBA, um die Ausgabe von Now oder getActTime anzupassen. Beispiel:

    Dim formattedTime As String
    formattedTime = Format(Now, "hh:mm:ss,0")
  • Wenn Du mit Zeitstempeln arbeitest, achte darauf, dass die Zeitzone Deines Systems korrekt eingestellt ist, um die tatsächliche Uhrzeit zu erhalten.


FAQ: Häufige Fragen

1. Wie kann ich die Uhrzeit ohne Sekunden anzeigen? Du kannst die Formatierung in Excel anpassen, um nur Stunden und Minuten anzuzeigen, z.B. hh:mm.

2. Gibt es eine Möglichkeit, die Uhrzeit in einem Makro automatisch zu aktualisieren? Ja, Du kannst die OnTime-Methode verwenden, um das Makro in regelmäßigen Abständen auszuführen, wie im Abschnitt "Alternative Methoden" beschrieben.

3. Warum wird die Zeit in Zelle A2 nicht korrekt angezeigt? Stelle sicher, dass die Zelle A2 das richtige Format hat und dass Du getActTime() richtig eingerichtet hast. Überprüfe auch, ob die Funktion in VBA korrekt deklariert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige