Aufgenommenes Makro ändert Datumsformat??

Bild

Betrifft: Aufgenommenes Makro ändert Datumsformat??
von: Joerg
Geschrieben am: 30.04.2015 12:57:23

Hallo zusammen,
bin neu hier, dieses Forum hat mir schon so einige Fragen als Leser beantwortet.
Nun muss ich aber einen Beitrag erstellen!
Ich arbeite mit Excel 2007.
Ich habe einen Datensatz der so aussieht:
released 3969601 1672821 05-05-15 31-03-15 29-04-15 16:44
released 3969602 1673181 05-05-15 27-04-15 29-04-15 16:44
released 3969603 1673189 05-05-15 27-04-15 29-04-15 16:44
released 3969604 1673190 05-05-15 27-04-15 29-04-15 16:44
released 3969605 1673192 05-05-15 28-04-15 29-04-15 16:44
released 3969606 1673193 05-05-15 27-04-15 29-04-15 16:44
released 3969607 1673194 05-05-15 27-04-15 29-04-15 16:44
Fokus liegt dabei auf Spalte D bis F, also die, wo das Datum in DD-MM-YY steht.
Ich habe eine vorformatierte Excel-File, in die ich diese Daten einfüge (paste) oder als Reintext einfüge (paste special) und dann über "Text in Spalten" entsprechend splitte.
Nun zum Problem: Wenn ich ein Makro aufnehme und es dann starte, kreiert mir das Makro in den Datumsspalten unterschiedliche Layouts.
Ist der TAG einstellig (z.B. 5.4.2015) dann 5.5.2015 (OK), ist der TAG zweistellig (z.B. 27.4.2015) dann 27-04-15 (nicht OK).
Das führt dazu, dass meine nachgelagerten Formeln nicht mehr funktionieren.
hier das Makro:
' Keyboard Shortcut: Ctrl+o
'
ActiveSheet.Paste
Selection.TextToColumns Destination:=Range("A3"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(8, 1), Array(16, 1), Array(24, 1), Array(33, 1), _
Array(42, 1), Array(51, 1), Array(57, 1), Array(88, 1), Array(90, 1), Array(96, 1), Array( _
106, 1), Array(114, 1), Array(124, 1), Array(129, 1), Array(135, 1)), _
TrailingMinusNumbers:=True
ActiveSheet.Range("$A$2:$T$110").AutoFilter Field:=1, Criteria1:="--------"
Rows("57:119").Select
Selection.Delete Shift:=xlUp
ActiveSheet.Range("$A$2:$T$104").AutoFilter Field:=1
ActiveWindow.SmallScroll Down:=-21
Range("Q3").Select
Selection.AutoFill Destination:=Range("Q3:Q104")
Range("Q3:Q104").Select
ActiveWorkbook.Worksheets("08").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("08").AutoFilter.Sort.SortFields.Add Key:=Range( _
"E2:E104"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("08").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Worksheets("08").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("08").AutoFilter.Sort.SortFields.Add Key:=Range( _
"Q2:Q104"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("08").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Danke für Tips im voraus
Joerg

Bild

Betrifft: AW: Aufgenommenes Makro ändert Datumsformat??
von: Daniel
Geschrieben am: 30.04.2015 13:11:15
Hi
gib in der FieldInfo für die Datumspalten an, dass das Datum im Format TMJ (Tag-Monat-Jahr) vorliegt:
Array(x, 4) bzw Array(x, xlDMYFormat)

dann wird es die Spalte in ein Excelkonformes Datum konvertieren, welches du per Zahlenformat in jede beliebige Darstellungsform bringen kannst.
mit der Vorgabe 1 (Allgemein) wird VBA versuchen, die Texte nach dem englischen Schema (Monat-Tag-Jahr) zu wandeln und wenn das nicht gelingt, bleibt der Wert als einfacher Text so wie er ist.
Wenn man hier mit dem Recorder arbeitet, muss man aufpassen.
Wenn du normal in Excel arbeitest, wendet Excel bei "Allgemein" das landestypische Format (hier das deutsche) an und der Recorder zeichnet dann auch "allgemein" auf.
Wenn du den Code dann jedoch in VBA ablaufen lässt, ist nicht Excel am Werk sondern VBA und das spricht immer englisch und wendet bei "Allgemein" dannn auch as englische Format an.
Daher ist es notwendig, den Code zu überarbeiten und die Formate nicht der Automatik zu überlassen, sondern fest vorzugeben.
Gruß Daniel

Bild

Betrifft: AW: Aufgenommenes Makro ändert Datumsformat??
von: Joerg
Geschrieben am: 30.04.2015 13:26:04
ah, hab die erste Mail übersehen. Auch dir Daniel, danke für die Erklärung.
Und allen ein schönes 1. Mai-WE
Gruss
Joerg

Bild

Betrifft: AW: Aufgenommenes Makro ändert Datumsformat??
von: Rudi Maintaire
Geschrieben am: 30.04.2015 13:16:30
Hallo,
Selection.TextToColumns Destination:=Range("A3"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(8, 1), Array(16, 1), Array(24, 4), Array(33, 4), _
Array(42, 4), Array(51, 1), Array(57, 1), Array(88, 1), Array(90, 1), Array(96, 1), Array( _
106, 1), Array(114, 1), Array(124, 1), Array(129, 1), Array(135, 1)), _
TrailingMinusNumbers:=True
Gruß
Rudi

Bild

Betrifft: AW: Aufgenommenes Makro ändert Datumsformat??
von: Joerg
Geschrieben am: 30.04.2015 13:22:44
Rudi, besten Dank, das funzt!
Kannst du mir auch noch sagen, was diese Änderung auf "4" im engeren Sinne bewirkt?

Bild

Betrifft: AW: Aufgenommenes Makro ändert Datumsformat??
von: Rudi Maintaire
Geschrieben am: 30.04.2015 13:38:55
Hallo,
hat Daniel doch geschrieben.
Gruß
Rudi

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Aufgenommenes Makro ändert Datumsformat??"