AW: Blank in String einfügen, wenn ...
29.09.2008 10:37:39
Chris
Servus Günter,
hiermal abgeändert:
Sub Blank()
Dim i As Long, StellenArray() As Long, x As Long, z As Long, lngLetzte As Long
lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
For z = 1 To lngLetzte
For i = 2 To Len(Cells(z, 1))
If Mid(Cells(z, 1), i, 1) = UCase(Mid(Cells(z, 1), i, 1)) And Mid(Cells(z, 1), i, 1) " " _
And Mid(Cells(z, 1), i, 1) "ß" Then
ReDim Preserve StellenArray(x)
StellenArray(x) = i
x = x + 1
End If
Next i
On Error Resume Next
For k = UBound(StellenArray()) To LBound(StellenArray()) Step -1
If Mid(Cells(z, 1), StellenArray(k) - 1, 1) " " And Mid(Cells(z, 1), StellenArray(k) - 1, _
1) UCase(Mid(Cells(z, 1), StellenArray(k) - 1, 1)) Then
Cells(z, 1) = Left(Cells(z, 1), StellenArray(k) - 1) & " " & Right(Cells(z, 1), Len( _
Cells(z, 1)) - StellenArray(k) + 1)
Else
If Mid(Cells(z, 1), StellenArray(k) - 1, 1) = "ß" Then
Cells(z, 1) = Left(Cells(z, 1), StellenArray(k) - 1) & " " & Right(Cells(z, 1), Len( _
Cells(z, 1)) - StellenArray(k) + 1)
End If
End If
Next k
On Error GoTo 0
x = 0
Next z
End Sub
Allerdings die eierlegende Wollmilchsau kann ich dir nicht liefern. Jetzt wird eben BAHNMAUER nicht mehr getrennt, da man ja keine wirkliche Wortabgrenzung hat. Könnte ja sein:
Bahn mau er
oder
Bahn Mauer
oder
Bahnmauer,
aber woher soll man das wissen. Das kann man nicht auseinanderhalten. Außerdem wird z.B.:
WeißESybille dann so getrennt: Weiß ESybille, weil die Trennbedingungen so sind. WeißeSybille wird dagegen richtig getrennt in Weiße Sybille, aber dagegen kann ich nichts machen, weil irgendetwas brauch ich ja nun als Trennkriterium. Eigenständige Wörter erkennt das Makro nicht.
Gruß
Chris