Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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
Text in Spalten - Makro
16.04.2014 08:41:39
Detlef
Hallo,
ich will die Spalte L mit "Text in Spalten" mit dem Marko aufzeichnen. Allerdings funktioniert mein Makro nicht. Wenn ich diesen ausführe passiert nichts. Sobald ich wieder Text in Spalten manuell ausführen funktioniert es.
Hier mein Code:
Range("L6:L10000").Select
Selection.TextToColumns Destination:=Range("B6"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True
In Spalte L steht ein Datum + Uhrzeit, der allerdings erst nach dem Text in Splaten korrekt formatiert wird.
Könnt ihr mir helfen was ich hier falsch mache?
LG

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
funktioniert ...
16.04.2014 09:14:13
Matthias
Hallo
Zitat:

Allerdings funktioniert mein Makro nicht.
Kann ich nicht bestätigen, das Makro wird korrekt ausgeführt.
Hinweis zu:
 Range("L6:L10000").Select
Selection.TextToColumns ...
Select muss nicht sein, du kannst es auch so schreiben:
Range("L6:L10000").TextToColumns Destination:=Range("B6"), ...
Gruß Matthias

AW: funktioniert ...
16.04.2014 09:27:18
Detlef
Nein leider nicht. Guck mal in meiner Beispieldatei:
https://www.herber.de/bbs/user/90186.xlsm
Wenn man es manuell ausführt, dann stehen die Daten "rechtsbündig". Wenn es per Makro gestartet wird dann passiert nicht.
Um die Daten nachher auszuwerten müssen diese "rechtsbündig" stehen, also richtig formatiert. Die Daten werden aus einem SQL in Excel ausgelesen.

Anzeige
AW: funktioniert ...
16.04.2014 09:35:13
Philipp
Hallo Detlef,
nimm doch sowas hier:
Public Sub convertToDate()
Dim rngDates As Range
Dim rngCell As Range
Set rngDates = Range("L6:L10000")
For Each rngCell In rngDates
rngCell = CDate(rngCell)
Next rngCell
End Sub
Gruß
Philipp

AW: funktioniert ...
16.04.2014 09:40:33
Detlef
Das klappt ja wunderbar. Kann man das auch dynamisch machen?
Also es sind nicht immer 10000 Zeilen vorhanden. Manchmal auch nur 200.
Kann es iwie so hinbekommen, dass VBA es automatisch erkennt wann die letzte zeile aufhört?
LG

AW: funktioniert ...
16.04.2014 09:45:52
Philipp
Hallo Detlef,
das kann man auch. Vorne folgendes einfügen.
Dim lngLastRow As Long
lngLastRow = ActiveSheet.Cells(Rows.Count, 12).End(xlUp).Row
Set rngDates = Range("L6:L" & lngLastRow)
Es ist halt immer die Frage wie/wann genau der code ausgeführt wird.
Gruß
Philipp

Anzeige
AW: funktioniert ...
16.04.2014 09:59:14
Detlef
Danke, das klappt!
Allerdings wird die Exceldatei von einem Server aus gestartet und dort dauert die Formatierung sehr sehr lange. Gibt es noch eine möglichkeit dies zu beschleunigen? Evtl das er im Vorfeld sie gesamte Spalte markiert und dann formatiert und nicht jede Zeile einzelnd?

AW: funktioniert ...
16.04.2014 11:17:53
Philipp
Hallo Detlef,
wenn das so häppchenweise kommt, haben wir hier deutlich mehr Arbeit.
Soweit ich das sehe, funktioniert die Konvertierung nicht über einen Bereich, daher nehm ich die Lösung mit *1 als Vorlage und einer Hilfsspalte (Spalte ALL), wo die Formel mal kurz reinkommt und dann später die Inhalte wieder zurück in Spalte L.
Schau mal, ob das so passt und schneller ist.
Die Spalten und Startzeile sind flexibel. Einfach oben anpassen, falls irgendwas nicht passt.
Public Sub convertToDate()
Dim rngDates As Range
Dim rngCopyDates As Range
Dim lngLastRow As Long
Dim lngSrcCol As Long: lngSrcCol = 12
Dim lngCopyCol As Long: lngCopyCol = 1000
Dim lngStartingRow As Long: lngStartingRow = 6
lngLastRow = ActiveSheet.Cells(Rows.Count, 12).End(xlUp).Row
With ActiveSheet
Set rngDates = .Range(.Cells(lngStartingRow, lngSrcCol), .Cells(lngLastRow, lngSrcCol))
Set rngCopyDates = .Range(.Cells(lngStartingRow, lngCopyCol), .Cells(lngLastRow,  _
lngCopyCol))
End With
rngCopyDates.FormulaR1C1 = "=RC" & lngSrcCol & " * 1"
rngDates.FormulaR1C1 = rngCopyDates.Value
rngCopyDates.ClearContents
End Sub
Gruß
Philipp

Anzeige
AW: funktioniert ...
16.04.2014 13:00:08
Detlef
Super, vielen Dank!

ohne Makro ...
16.04.2014 09:42:07
Matthias
Hallo
Schreib in eine leere Zelle eine 1
Diese kopierst Du
Jetzt markierst Du Deinen Bereich und wählst

  • Inhalte einfügen

  • Multiplizieren

  • ok


Das wars schon
Gruß Matthias

AW: ohne Makro ...
16.04.2014 09:45:31
Detlef
Da gefällt mir Phillips Lösung besser. Allerdings brauche ich es dynamisch.
Dein Vorschlag könnte man auch als Makro aufzeichnen, allerdings habe ich auch hier das Problem das es nicht dynamisch ist.

warum schreibst Du das dann nicht gleich ?
16.04.2014 09:53:28
Matthias
Hallo
Du wolltest doch ursprünglich Daten Text in Spalten benutzen
Da kann man z.B. auch das Datum für die entsprechende(n) Spalte(n) einstellen!
Userbild
Gruß Matthias

Anzeige
AW: warum schreibst Du das dann nicht gleich ?
16.04.2014 09:57:51
Detlef
Das ist richtig, allerdings funktionert es nicht per Makro :-( Warum auch immer!

337 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige