VBA Schleife bleibt hängen
14.08.2015 14:52:56
Heiner
Ich fange gerade mit VBA an und bin dabei heute auf folgendes Problem gestoßen:
WaldNr Baum Attribute (getrennt durch Kommata)
Wald1 Baum x Der,Baum,steht,da
Wald2 Baum y Der,Baum,steht,da,schon,ganz,lange
bla bla bla,bla,bla,bla
Soll werden zu:
Wald1 Baum x Der Baum steht da
Der
Baum
steht
da
Wald2 Baum y Der Baum steht da schon ganz lange
Der
Baum
steht
da
schon
ganz
lange
bla bla bla bla
bla
bla
Dazu habe ich folgenden Code benutzt:(ist eine Erweiterung aus dem letzten Beitrag von hier: https://www.herber.de/forum/archiv/180to184/183226_Zellinhalte_aufteilen_per_VBA.html)
Sub TextTrennen_Kopieren_Transponieren()
Dim sText As String ' der eingegebene Text
Dim iPos As Integer ' die Position des Space (Trennzeichen)
Dim iCol As Integer ' die Beginn-Spalte der Aufsplittung
Dim iIndx As Integer ' For/Next Index
For iIndx = 2 To Range("C1000").End(xlUp).Row ' von Zeile 2 bis Ende
sText = Range("C" & iIndx).Value ' den Text holen
iPos = InStr(sText, ",") ' Komma-Position feststellen
iCol = 3 ' Beginn der Aufteilungs-Spalte
While iPos > 0 ' solange Komma gefunden wurde
Cells(iIndx, iCol).Value = Left(sText, iPos - 1) ' Zellen ab C befüllen
sText = Right(sText, Len(sText) - iPos) ' Eingabetext "verkürzen"
iPos = InStr(sText, ",") ' Komma suchen
iCol = iCol + 1 ' nächste Spalte errechnen
Wend
Cells(iIndx, iCol).Value = sText ' letztes Wort übertragen
Dim Offset_div As Integer
Offset_div = WorksheetFunction.CountIf(Range(Selection, Selection.Offset(0, 100)), "*") 'Zählt
aufgeteilte Wörter
Range("C" & iIndx).Select 'Wählt Zelle in Spalte "Attribute" aus
Range(Selection.Offset(1, 0), Selection.Offset(Offset_div, 0)).Select
'Wählt entsprechend der aufgeteilten Wörter, eine Anzahl an Zeilen aus
Selection.EntireRow.Insert 'Fügt entsprechende Anzahl Zeilen ein
Range("C" & iIndx).Select
Range(ActiveCell, ActiveCell.Offset(0, Offset_div - 1)).Copy
'Kopiert Zellen mit aufgeteilten Wörtern
ActiveCell.Offset(1, -1).Select
Selection.PasteSpecial Transpose:=True
'Transponiert Auswahl in die nächste Zelle unter "Baum xyz"
Next iIndx ' nächste Zeile
Wenn ich den Code ausführe, kommt folgendes raus:
WaldNr Baum Attribute (getrennt durch Kommata)
Wald1 Baum x Der Baum steht da
Der
Baum
steht
da
Wald2 Baum y Der,Baum,steht,da,schon,ganz,lange
bla bla bla,bla,bla
Das ist vermutlich keine sehr elegante Lösung (wie gesagt, habe gerade erst mit VBA angefangen...), aber ich sehe noch nicht ganz dahinter, warum nach "Der" in der "Baum"-Spalte noch einmal Zeilen eingfügt werden. Eigentlich sollte doch die Variable 'Offset_div'=0 werden, wenn die nächste Zeile aufgerufen wird, da ab der 'Attribut'-Spalte keine Zellen mehr Inhalt haben...
Ich wäre äußerst froh, wenn mir hier jemand weiterhelfen könnte.
Danke und viele Grüße
Heiner