Split statt Schleife
„wort1,wort2,wort3,wort4,wort5,wort6,wort7,“
Habe mir den Code jetzt nicht genau angeschaut, aber das Split kam da nicht drin vor, glaube ich:
Statt mit einer Schleife die ganzen Positionen der Kommata zu suchen und den Text dann auseinander zu pulen, ist folgendes viel einfacher:
Sub test()
Const s\_Sep As String = "," 'verwendetes Trennzeichen (Separator)
Const xOffs As Byte = 2 'Start in Spalte 2
Const y As Byte = 1 'Zeile 2
Dim sZeile As String
Dim arrWoerter() As String 'Array für die Einzelstrings
Dim i As Byte
sZeile = InputBox("Testzeile:", "Test", """wort1,wort2,wort3,wort4,wort5,wort6,wort7,""")
'löschen der Anführungszeichen:
sZeile = Replace(sZeile, """", "")
'letztes Trennzeichen löschen (muss aber nicht sein)
If Right(sZeile, 1) = s\_Sep Then sZeile = Left(sZeile, Len(sZeile) - 1)
'Zeile in seine Bestandzeile zerlegen:
arrWoerter = Split(sZeile, s\_Sep)
'Array auslesen und Inhalt ins Blatt schreiben:
For i = 0 To UBound(arrWoerter)
ActiveSheet.Cells(y, i + xOffs).Value = arrWoerter(i)
Next i
End Sub 'test
Man kann sich das Löschen des letzten Trennzeichens wie gesagt auch sparen, wenn die Anzahl der Elemente immer gleich ist - hier 7. Dann ändert sich die obere Grenze in der For-Schleife von der fexiblen Arraygröße (Ubound) zur festen 6 (die Zählung beginnt bei 0):
Sub test2()
Const s\_Sep As String = "," 'verwendetes Trennzeichen (Separator)
Const xOffs As Byte = 2 'Start in Spalte 2
Const y As Byte = 1 'Zeile 2
Dim sZeile As String
Dim arrWoerter() As String 'Array für die Einzelstrings
Dim i As Byte
sZeile = InputBox("Testzeile:", "Test", """wort1,wort2,wort3,wort4,wort5,wort6,wort7,""")
'löschen der Anführungszeichen:
sZeile = Replace(sZeile, """", "")
'letztes Trennzeichen wird nicht gelöscht - man kennt die Anzahl der Elemente (hier 7)
'Zeile in seine Bestandzeile zerlegen:
arrWoerter = Split(sZeile, s\_Sep)
'Array auslesen und Inhalt ins Blatt schreiben:
For i = 0 To 6
ActiveSheet.Cells(y, i + xOffs).Value = arrWoerter(i)
Next i
End Sub 'test2
Wenn man dann noch eventuelle Leerzeichen vor/hinter den Wörtern löschen will, macht man einfach noch ein „Trim()“ um das „arrWoerter(i)“ drumrum.
Die beiden Test-Prozeduren können direkt so ausgeführt werden. Aber aufpassen, sie schreiben ins Blatt rein. Und zum besseren Verständnis alle unbekannten Bezeichner (Split, Replace, For, Ubound, Trim, Cells, Right, Left) anklicken und mittels F1 in die jeweilige Hilfe springen.
Kristian