Anzeige
Archiv - Navigation
1612to1616
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
Inhaltsverzeichnis

Funktion zum Umbrechen von Wörtern

Funktion zum Umbrechen von Wörtern
11.03.2018 15:07:48
Wörtern
Hallo,
ich bastele gerade an einem Excel-basierten "Meldungseditor" für Automatisierungssysteme, die ich beruflich programmiere.
Der Benutzer soll seine Meldung als Fließtext eingeben können, im Quellcode des Zielsystems muss dieser Text auf max. fünf strings mit max. 55 Zeichen aufgeteilt werden.
Ich möchte nun mit einer eigenen Formel den benutzer-eingegebenen Fließtext umbrechen / zerlegen. Ich habe mir jetzt schon in VBA eine eigene Funktion erstellt, die den Ursprungstext mit "Split" und dem Leerzeichen als Trenner aufteilt. Das resultierende Array schreibe ich wieder in einzelne strings - nacheinander, bis jeweils die STring-Länge von 55 erreicht wird. Funktioniert soweit ganz gut:
Function UMBRECHEN(Text As String, Field As Long, NoOfChars As Integer) As String
Dim stTmpArray() As String, stReturn(0 To 5) As String
Dim lngPointer As Long, lngZielFeld As Long
On Error GoTo Fehlerhandler
'Eingangs-string zerlegen:
stTmpArray = Split(Text, " ")
'Ziel-Felder befüllen:
For lngPointer = LBound(stTmpArray) To UBound(stTmpArray) Step 1
If lngZielFeld  NoOfChars Then lngZielFeld = lngZielFeld + 1
stReturn(lngZielFeld) = stReturn(lngZielFeld) & " " & stTmpArray(lngPointer)
stReturn(lngZielFeld) = Trim(stReturn(lngZielFeld))
Next lngPointer
UMBRECHEN = stReturn(Field - 1)
Exit Function
Fehlerhandler:
UMBRECHEN = "Fehler"
Exit Function
End Function
Da MS Word (zum Beispiel) aber auch innerhalb eines Wortes nach den jew. Rechtschreibregeln umbrechen kann - schreibt man in Word Fließtext, kann es am Zeilenende ein Wort an der richtigen Stelle trennen, ein "-" anfügen und in der nächsten Zeile weiterschreiben - habe ich mich gefragt, ob ich dieses nicht auch in meiner eigenen Funktion so nutzen kann?
Office scheint ja entsprechende Funktionen "an Bord" zu haben.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion zum Umbrechen von Wörtern
11.03.2018 15:27:29
Wörtern
@ lupo1 nicht wenn es sich vermeiden lässt ;)
@ Hajo: Danke vielmals! Schaue es mir mal in Ruhe an
Da Du sicher kein Word-Objekt ...
11.03.2018 15:13:37
lupo1
... verwenden möchtest, schlägt dieser Wunsch möglicherweise fehl.
Ein Makro könnte aber genau das versuchen, wobei die soften Trennungen hard gemacht werden müssten. Das wäre, falls das überhaupt geht, ein Word-VBA-Befehl.
Anzeige
AW: Funktion zum Umbrechen von Wörtern
11.03.2018 15:35:56
Wörtern
Hallo Christian,
vor ein paar Tagen habe ich die automatische Erstellung von Kommentaren aus Text programmiert, den ich erst zur Laufzeit aus dem I-Net erhalte. Dafür brauchte ich auch eine automatische Zeilenlänge, nach der umgebrochen wird, weil die "Kommentarfunktionen" aus Excel nicht zum gewünschten Ergebnis führten.
Also habe ich mir folgende Funktion gebastelt:

Function TextInZeilen(text As String, zeichenProZeile As Integer, ganzesWort As Boolean) As  _
String
Dim textFertig As String
Dim textBearbeitung As String
Dim textAnzahlZeichen As Long
Dim zeichenProZeileDynamisch As Integer
textFertig = ""
textBearbeitung = text
textAnzahlZeichen = Len(textBearbeitung)
Do Until textAnzahlZeichen  0 Then
textFertig = textFertig & Chr(10)
End If
Else
textFertig = textFertig & Left(textBearbeitung, zeichenProZeile)
textBearbeitung = Trim(Right(textBearbeitung, textAnzahlZeichen _
- zeichenProZeile))
textAnzahlZeichen = Len(textBearbeitung)
If textAnzahlZeichen  0 Then
textFertig = textFertig & Chr(10)
End If
End If
Loop
If textAnzahlZeichen  0 Then
textFertig = textFertig & textBearbeitung
End If
TextInZeilen = textFertig
End Function
Der in Zeilen aufzuteilende Text wird im Parameter text übergeben. Danach wird im Parameter zeichenProZeile die Anzahl der Zeichen angegeben, nach der eine Zeile umgebrochen werden soll. Schließlich kann man mit dem Parameter ganzesWort noch angeben, ob die Zeile so weit verlängert werden soll, bis ein ganzes Wort umgebrochen wird. Dadurch kommt es natürlich regelmäßig zu Zeilen, die länger sind, als im zweiten Parameter festgelegt. Damit umgehe ich aber Umbrüche an falschen Stellen und mache mir auch keine weiteren Gedanken zur echten Silbentrennung.
Für meine Zwecke funktioniert das super. Wenn Du nicht über Deine 55 Zeichen pro Zeile kommen darfst, müsstest Du die Funktion so abändern, dass nicht das laufende Wort mit in der Zeile belassen, sondern bereits mit in die nächste Zeile umgebrochen wird.
Vielleicht hilfts Dir.
Viele Grüße,
Zwenn
Anzeige
Es gibt dafür bereits eine UDF, ...
11.03.2018 16:08:45
Luc:-?
…Christian,
die seit ca 9 Jahren im Archiv enthalten ist. Die sollte eigentlich fast alle Wünsche erfüllen… ;-]
Leider wird die UDF im Archiv wg der nachträglichen Platzbeschränkung (zugunsten von Werbung) etwas verquer (mit zusätzlichen Trennern _) dargestellt, die ggf entfernt wdn müssen.
Feedback nicht unerwünscht! Gruß, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Funktion zum Umbrechen von Wörtern
11.03.2018 23:35:19
Wörtern
Ich hätte das so....
Sub M_snb()
y = 60
c00 = "1scd 2adf 3adf 4adf 5sdf 6sdf 7scd 8adf 9adf 10sadf 11asdf 12asdf 13ascd 14sadf  _
15sadf 16sadf 17asdf 18asdf 19ascd 20sadf 21sadf 22sadf 23asdf 24asdf 25ascd 26sadf 27sadf 28sadf 29asdf 30asdf 31ascd 32sadf 33sadf 34sadf 35asdf 36asdf 37ascd 38sadf 39sadf 40sadf 41asdf 42asdf 43ascd 44sadf 45sadf"
c01 = Left(c00, y)
Do Until Len(c01) 

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige