Makro um Werte in Datum umzuwandeln

Lassylver

Newbie
Registriert
Juli 2018
Beiträge
7
Hallo zusammen,

ich bekomme aus einem Programm einen Excel-Auszug mit mehreren Spalten voll verschiedener 'Datumsformate'. Nun wollte ich das ganze in eine Pivot-Tabelle importieren, musste aber feststellen, dass Excel diese Zellen nicht als Datum erkennt. Nun habe ich etwas aufwendig (und sicherlich auch nicht notwendig) ein Makro geschrieben, dass mir neben der Spalte A (in welcher das nicht erkannte Datum steht) eine neue Spalte einfügt. Dann in Spalte B mittels =VALUE() Funktion den Wert aus Spalte A ermittelt. Die Spalte B wiederum kopiert und mittels 'Einfügen' nur Wert und Formatierung in Spalte A eingefügt und danach Spalte B wieder gelöscht.

Diese mega-komplizierte Lösung hat auch eine Weile funktioniert, nur mein Problem Nr. 1 - meine Zwischenablage ist riesig und Nr. 2 - meine Berichte sind immer verschieden lang und das Makro bricht eben ab, je nachdem, wie lange die Tabelle im ersten Makro war. Nun möchte ich ein Makro schreiben, dass oben erklärtes Ziel erreicht (Wert in einer Zelle in ein Datumsformat umwandeln) und zwar so lange, bis in der gleichen Zeile in Zelle X kein Wert mehr steht.

Ich hoffe, ihr könnt mir helfen!
LG lassylver
 
Stringkonvertierungen sind ziemlich unangenehm...aber man kann es probieren:
Code:
Sub convert()
Const col_dat = 1 'zu konvertierende Datumsspalte
Const col_erg = 2 'Spalte für das Ergebnis
Const col_fehler = 3 'Spalte in der der Fehler markiert wird
Dim i As Long

On Error GoTo fehler

i = 1 'Startzeile
While Not Me.Cells(i, col_dat).Value = ""
    Me.Cells(i, col_erg).Value = CDate(Me.Cells(i, col_dat).Value)
weiter:
    i = i + 1
Wend

On Error GoTo 0
Exit Sub
fehler:
Me.Cells(i, col_fehler).Value = "Fehler"
GoTo weiter

End Sub

Das Ding wird allerdings alle Nase lang an die Wand fahren, nämlich immer dann, wenn er eines deiner Daten nicht konvertieren kann.

Edit:
Habe das Skript jetzt angepasst. Dieses kopierst du einfach in den VB-Code der entsprechenden Tabelle.

Da ich deine unzähligen Datumsformate nicht kenne, kann ich es nur so lösen, ansonsten kann man im Fehlerteil anfangen die Fehler einzeln zu behandeln.

Und ja, ich weiß das es auch schöner geht...aber VBA ist nicht schön ;)

Edit 2:
Okay, ich habe jetzt nochmal genau gelesen...und wenn du tatsächlich mit der Wert-Funktion das Datum konvertieren kannst, sollte es wie oben beschrieben eigentlich gehen...
Ansonsten sollte es eigentlich auch gehen, wenn du einfach das Format der gesamten Spalte anpasst.
Und um dein jetziges Makro dynamisch zu machen, kannst du bei der Aufzeichnung anstatt den Bereich zu markieren, einfach die erste Zelle markieren und auf die untere rechte Ecke der Zelle klicken.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: cruse
Hey,

ich hab versucht das Makro so laufen zu lassen, aber ich bekomme folgenden Fehler.

Screen Shot 2018-09-07 at 11.40.22 AM.png
Screen Shot 2018-09-07 at 11.40.29 AM.png

Woran kann das liegen?

LG
 
Moin,
warum überhaupt ein Makro? Meist geht es mit "Text in Spalten" und einer sofortigen Bestätigung problemlos. Alternativ bietet sich Power Query als Luxus-Lösung mit immens viel weiteren Möglichkeiten an ...
 
Hallo GunMum,
korrekt, warum überhaupt ein Makro? :-) Du hattest komplett Recht, mit 'Text in Spalten' geht es viel einfacher....
@CHaos.Gentle Gentle: Trotzdem vielen Dank fürs Makro ;-)
 
Kein Ding :)
Hab dein Problem definitiv nicht richtig verstanden...das sich das mit Text in Spalten lösen lässt...tz ;)

Fehler war im Übrigen, dass du die Sub in den Quelltext der Tabelle kopieren musst. Nicht ins Worksheet.
 
Zurück
Oben