Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datum-Format Abfrage in VBA

Datum-Format Abfrage in VBA
20.06.2007 16:24:00
Damir
Hallo Leute,
Folgendes Problem habe ich:
In der Arbeitsmappe kann ich mit folgendem Befehl überprüfen ob der Inhalt ein Datum ist
bzw. ob das Datum-Format in der Zelle aktiv ist:
IF ( CELL("format";B1)="D1";"Datum";"Kein Datum")
Wie kann man das mit einem Makro/VBA überprüfen ?
Folgender Abschnitt funktioniert leider nicht (als Beispiel):
For Each c In ActiveSheet.Range("A1:A1000").Cells
If c.NumberFormat = "Date" Then c.Value = Format(c.Value, "YYYYMMDD")
Next
Dagegen der Abschnitt unten funktioniert korrekt (ob die Zelle die Formatierung "General" hat:
For Each c In ActiveSheet.Range("A1:A1000").Cells
If ((c.Value "") And (c.NumberFormat = "General")) Then c.Value = c.Value & "0000"
Next
Hat jemand hier eine Idee ?
Danke und Gruss
Damir

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum-Format Abfrage in VBA
20.06.2007 16:35:00
ingUR
Hallo, Damir,
vielleicht funkioniert dieses, wenn in der Zelle ein gültiges Datum steht:
If isdate(c) Then c.Value = Format(c.Value, "YYYYMMDD")
Allederdings habe ich nicht geprüft, was passiert, wenn die Zelle bereits ein Datumsformat hat.
Gruß,
Uwe

AW: Datum-Format Abfrage in VBA
20.06.2007 17:41:00
Damir
Hallo Uwe,
Danke ! Nun funktioniert Abfrage isdate(c)
Die Zelle hat entweder Datumsormat (12.11.2000) oder "General"-Format (z.B. 1965 -> ein Jahr). Wenn das Format "General" ist dann bekomme ich mit
If ((c.Value <> "") And (c.NumberFormat = "General")) Then c.Value = c.Value & "0000"
korrektes Ergebnis. Wenn in der Zelle Datumsformat ist dann gibt es ein Overflow.
Gruss Damir

Anzeige
AW: Datum-Format Abfrage in VBA
20.06.2007 18:52:00
ingUR
Hallo, Damir,
bedenke bei den Operationen immer, dass eine Datum intern eine Double-Datentyp ist, als eine Gleitkommazahl, bei der die Ganzzahl die anzahl der Tage ab einem Stichtag angeben und die nachkommastellen als Bruchzahl des Tages die Uhrzeit angibt.
Damit wird wohl auch klar, dass Du einem Wert einer Zelle (c.Value) vom Datentyp Double resp. Date ohne Typenumwandlung keinen Teilstring (hier & "0000") anfügen kannst. Wenn nun 1995 als Text eingesetzt wird, dann funktioniert das Anfügen des Teilstrings, jedoch ein Umformen dieses Textes "1995"in eine Datumswert dürfte nicht ohne weiteres funktionieren.
Schau Dir im Debug-Moduseinmal die unterschidlichen Bestandteile der Zellle c an (via Überwachung oder bequemer im Ansichtfenster Lokal-Fenster)
Es ist also von Bedeutung, welchen Datentyp Du erzeugen willst, denn ein angezeigter Wert/String "19950000" ist kein Datumswert, der einen Tag im Jahr 1995 bezeichnet, sondern eine Zahl(!), die allerdings auch nicht in ein, für das Sytem direkt darstellbares Datum mit vier Jahresziffern, gewandelt werden kann (die Zahl 1995000 zeigt das Datum 13.02.7362).
Der erste Tag im Jahr 1995, 0:00:00,0 wird durch die Zahl 34700.000 ausgedrückt.
Nun mußt Du entscheiden, ob ein Datumswert oder eine Zeichenkette generiert werden soll.
Gruß,
Uwe

Anzeige
AW: Datum-Format Abfrage in VBA
20.06.2007 16:36:31
Hubert
For Each c In ActiveSheet.Range("A1:A1000").Cells
If IsDate(c) Then c.Value = Format(c.Value, "YYYYMMDD")
Next
mfg Hubert

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige