Hi,
ich habe folgenden Code probiert aber leider bekomme ich es nicht hin und eine Fehlermeldung..
Ich versuche eine Text In Spalte Prozedur zu schreiben die aber dynamisch funktioniert ... Es soll diese Prozedur mehrmals aufgerufen werden und deshalb bräuchte ich den Text in Spalte immer in der letzten freien Spalte einer Tabelle.
Leider weis ich nicht wie es funkionieren könnte.
Hier der Code
Sub SpalteInTextSpalteF()
Dim LastColumn As Integer
With Tabelle10
LastColumn = Cells(2, Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False
Columns(6).TextToColumns Destination:=Range(LastColumn), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, OtherChar:="/"
Columns(6).Delete
Cells.EntireColumn.AutoFit
End With
Application.ScreenUpdating = True
End Sub
könnte mir jemand behilflich sein bitte?
Der debugger stoppt in der Zeile Columns(6).TextToColumns Destination:=Range(LastColumn), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, OtherChar:="/"
Laufzeitfehler 1004
Die Methode "Range" für das Objekt Globas ist fehlgeschlagen
LG
Albert
Hallo Albert,
das Thema gehört wohl in den Excel-Bereich. Kann jedenfalls keine Access-Komponenten erkennen.
Hi el_gomero,
also so viel ich sehen kann ist es in dem Excel Forum.
Aber danke für Deine Antwort!
LG
Hi,
Zitatdas Thema gehört wohl in den Excel-Bereich
klar, dort befindet er sich ja auch. ;-)
@SilentWolf:
Ich finde den Code insgesamt etwas "fragwürdig".
Was ist "Tabelle10", wo wird dieses Objekt initialisiert?
Und dann machst du gar keinen Gebrauch von dem With-Statement.
Das solltest du als erstes ändern.
da war mir wohl der Schweiss in die Augen gelaufen ... hast natürlich recht, sorry ;)
Hi Maggie,
danke für Deine Antwort!
Na ja Tabelle10 ist halt eine Tabelle in meinen Workbook.
Und dort hätte ich den Code halt mal getestet.
Leider hab ich hier ja wohl noch meine Schwierigkeiten um diesen richtig zu schreiben :(
Wo das objekt initialisiert wird hmm das ist eine gute Frage ???
Ich weis es leider nicht :(
Hab jetzt einige Dinge probiert aber irgendwie komme ich nicht drauf wie es funkionieren soll oder kann.
Lg
Albert
Wenn "Tabelle10" der Name des Arbeitsblattes ist, so kannst du das folgendermaßen versuchen:
Sub SpalteInTextSpalteF()
Dim LastColumn As Integer
' Application.ScreenUpdating = False
With ActiveWorkbook.Sheets("Tabelle10")
LastColumn = .Cells(2, .Columns.Count).End(xlToLeft).Column
.Columns(6).TextToColumns Destination:=.Range(LastColumn), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, OtherChar:="/"
.Columns(6).Delete
.Cells.EntireColumn.AutoFit
End With
' Application.ScreenUpdating = True
End Sub
Hi Maggie,
vielen Dank für Deine Hilfe! Leider bekomme ich auch hier noch eine Fehlermeldung in der selben Zeile :(
Anwendungs oder Objektdefinierter Fehler.
LG
Der Ausdruck ".Range(LastColumn)" liefert vermutlich kein gültiges Range-Objekt.
Was hast du da eigentlich vor, was willst du auf mehrere Spalten verteilen und woher kommt der Input?
Hi Maggie,
also was ich genau vorhabe ist folgendes.
Ich möchte die Spalte in meinem Fall "F" der Tabelle1"( ist es eigentlich ) in Text zu Spalten aufteilen.
die Aufgeteilte Spalte soll in die erste freie Spalte dieser Tabelle eingefügt werden.
Danach soll die Spalte F gelöscht werden und wieder der selbe Vorgang neu gestartet werden da ich mehrere Spalten habe die Text zu Spalte aufgeteilt werden müssen.
Da jetzt die letzte Spalte nicht mehr die selbe ist als es zuvor war brauche ich eben wieder die erste freie Spalte in dieser Tabelle.
Ist das so gut genug erklärt??
LG
Hi,
ich habe mal etwas herumprobiert und eine (für mich) funktionierende Lösung gefunden:
Sub SpalteInTextSpalteF()
Dim LastColumn As Integer, LastRow As Integer
Dim Tab As Object
Set Tab = ActiveWorkbook.Sheets("Tabelle1")
' Application.ScreenUpdating = False
With Tab
LastColumn = .Cells(2, .Columns.Count).End(xlToLeft).Column
LastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
.Columns(6).TextToColumns _
Destination:=.Range(.Cells(1, LastColumn + 1), .Cells(LastRow, LastColumn + 1)), _
DataType:=xlDelimited, _
TextQualifier:=xlTextQualifierNone, _
Other:=True, OtherChar:=";"
.Columns(6).Delete
.Cells.EntireColumn.AutoFit
End With
' Application.ScreenUpdating = True
Set Tab = Nothing
End Sub
Die Parameter musst du evtl. noch anpassen, ich hatte mit dem Semikolon als Trennzeichen getestet.
Wenn du das mehrfach ausführen lassen willst, wie kommt denn dann der neue Inhalt in Spalte "F"?
PS:
Die Definition des Ziel-Ranges geht sicher einfacher, dann wüsste ich gern wie. :-)
Hallo Maggie,
vielen dank für Deine mail!
Leider habe ich nicht viel Zeit um den Code zu testen.. aber ich denke es gibt hier doch noch ein Problem und zwar hat die letzte benutzte Spalte leider nicht alle Zellen mit Werten eingetragen :(
Es ist eine CSV Datei die ich hier ändern bez. anpassen möchte. Und hier kann man nicht sagen in welcher Zelle der letzt benutzten Spalte ein Wert steht. Also sollte der Code eigentlich die ganze Spalte durchsuchen und kontrollieren ob ein Wert in der Spalte ist oder nicht.
Danke
Lg
Albert
Hallo,
gibt es denn eine Spalte aus der sich die Anzahl Zeilen ermitteln lässt?
Dann sollte folgendes klappen:
Sub SpalteInTextSpalteF()
Dim LastColumn As Integer, LastRow As Integer
Dim i As Long, X As Long
Dim xlTab As Object
Set xlTab = ActiveWorkbook.Sheets("Tabelle1")
' Application.ScreenUpdating = False
With xlTab
LastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
For i = 1 To LastRow
X = .Cells(i, .Columns.Count).End(xlToLeft).Column
If X > LastColumn Then LastColumn = X
Next
.Columns(6).TextToColumns _
Destination:=.Range(.Cells(1, LastColumn + 1), .Cells(LastRow, LastColumn + 1)), _
DataType:=xlDelimited, _
TextQualifier:=xlTextQualifierNone, _
Other:=True, OtherChar:=";"
.Columns(6).Delete
.Cells.EntireColumn.AutoFit
End With
' Application.ScreenUpdating = True
Set xlTab = Nothing
End Sub
Hi Maggie,
Vielen Dank für Deine Antwort!
ja die Spalte A in dieser Tabelle enthält die Anzahl der Zeilen also durchgehend.
ZitatWenn du das mehrfach ausführen lassen willst, wie kommt denn dann der neue Inhalt in Spalte "F"?
Es wird ja die Spalte F gelöscht und dann wird die Spalte G zur Spalte F die ich in der gleichen Form wieder mit der Text in Spalte Funktion ausführen möchte.
Werde den Code mal testen den Du geschickt hast mal sehen wie es geht :)
melde mich wieder für neue updates :)
LG
Albert
Hi,
Zitatja die Spalte A in dieser Tabelle enthält die Anzahl der Zeilen also durchgehend
dann musst du hier die 6 durch die 1 ersetzen:
LastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
Hi Maggie,
ja so funktioniert es mal ganz gut vielen Dank!
LG
Albert