Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro für "Text in Spalten"





Frage

Hallo Excel Fans, könnte mir jemand den Quellcode (für den VBA) für die Aktion "Text in Spalten" geben. Dabei soll er die Range A2:300 nehmen und nach ";" trennen. Ich habe das aufgezeichnet und dabei ist das hier herausgekommen: Range("A2:A300").Select Selection.TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _ TrailingMinusNumbers:=True Ich frage nach einem sauberen Code, der handgeschrieben ist, denn das Makro verhält sich beim Aufruf nicht so, wie es sollte. Wenn ich Text in Spalte setzen lasse (ohne Makro) geht alles super, wenn ich aber dann den gleichen Datensatz mit dem Makro Text in Spalten laufen lasse, hat er Probleme Datumseinträge zu erkennen. Könnte mir deshalb jemand einen selbstgeschriebenen Text in Spalten Code mal geben oder ist das zu schwer, das selbst zu schreiben???..ich glaube damit könnte es gehen...

Antwort 1 von coros

Hi DAjava,

welche Excelversion verwendest Du, was für Probleme treten geziehlt beim Ausführen des Makros auf und wie sieht der Zelleninhalt aus (wenn möglich mal ein Beispiel für vorher und nachher hier hin schreiben). Wenn das geklärt ist, wird sicherlich auch eine Lösung möglich sein.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von DAjava

Also ich nutze Excel 2003.

Eiegntlich kann man das Mproblem ganz leicht darstellen:

In der Spalte A steht:

Text;Text;Datum
(z.B. Peter Müller;Handwerker;20. Oktober 1942)

Die soll auf die Spalten A,B,C verteilt werden. In Spalte C hab ich ein das Datumsformat formatiert (z.B. 14.03.2001) Dies soll die Form für alle Datumseingaben in spalte C sein.

Wenn ich jetzt das Beispiel von oben mit dem TEXT IN SPALTEN WIZRD mache, ist alles super. Der TExt wird verteilt und Spalte C setzt automatisch in das Format um.
So das ganze hab ich jetzt aufgezeichnet als Makro.
Ich schließe Excel und möchte nun das gleiche Beispiel nicht mit dem Wizard machen sondern mit dem Makro. Die Aufteilung auf die Spalten klappt super, nur wird das Datum nicht als Datum erkannt (bleibt auch linksbündig). Jetzt muss ich ersteinmal in die Zelle klicken(als ob ich sie formatieren möchte), klick dann wieder aus der Zelle raus und ERST dann erkennt Excel das es ja ein Datum ist und überträgt (wie hier im Beispiel:) 20. Oktober 1942 in 20.10.1942

Das liegt an dem Makro oder was glaubst du Coros?? Probier mal das Beispiel aus...ich hoffe sehr du kannst mir helfen??!!!

Antwort 3 von Event

Hallo
Versuch´s mal so:

Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 4))

Gruß

Antwort 4 von DAjava

Hallo Event,

hat das bei Dir geklappt, bei mir tritt nämlich das gleiche Problem auf. Das Datum wird erst dann erkannt, wenn man nach dem Makro nochmal in die Zelle mit dem Datum reinklickt!!!
:-(
hmmmmmm...?!

Antwort 5 von Event

Hallo

Ja, hat geklappt, die 4 bei der 3. Array( 3, 4)-Auflistung bestimmt nämlich, daß dieses Feld als Datum angesehen wird.

Gruß

Antwort 6 von DAJava

Wieso geht denn das bei mir nicht???? Kannst du mir die Datei mal schicken mit der das geht oder ich dir meine??
--> ckennecke[at]gmx.de

Bei mir wird das Datum nach dem Makro nicht sofort erkannt!

Antwort 7 von DAJava

Also, leider geht das mit dem Datum bei mir nicht, hab an andere Stelle aber gelesen, wie man Datumseingaben, die nicht als solche erkannt wurden mit
Sub ConvertToDate()

Dim rngCell As Range

On Error Resume Next
For Each rngCell In Selection
If IsDate(rngCell.Value) Then
rngCell.Value = DateValue(rngCell.Value)
End If
Next rngCell
On Error GoTo 0
End Sub

in ein Datumsformat bekommt....Nagut..dann den Weg eben so!