Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
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
Zeilenumbrüche in zellen finden
22.09.2015 13:22:55
Jörg
Hallo,
ich erstelle über VBA aus einer Tabelle verschiedene Texte, die ich als Angebot nutze. Je nach Eingabe in der Tabelle können dabei Angebotspositionen mit einer Größe von nur einer Zeile aber auch solche mit 20 Zeilen und mehr in einer Zelle werden.
Es gibt immer wieder Probleme, wenn eine Zeile dann so hoch wird, dass nur diese Zelle auf den Ausdruck passt und die halbe Seite leer bleibt, weil die nächste Zelle ebenfalls sehr hoch geworden ist.
Ich suche nach einer Möglichkeit festzustellen, an welcher Stelle excel automatisch (!) den Zeilenumbruch vornimmt, um diesen dann abzugreifen und u.U. einfach eine neue Zelle zu beginnen. Diese Position ist ja nicht nur vom Text, sondern auch von der Schriftgröße, Font, Drucker und auch vom Anwender - auf dessen Computereinstellung ich nur bedingt Zugriff habe - abhängig.
Ich brauche keine Info zum Einfügen von harten Zeilenumbrüchen oder chr(13) o.ä.
Vielen Dank
Jörg

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenumbrüche in zellen finden
22.09.2015 13:42:49
Daniel
Hi
das habe ich mal so gelöst
- TextBox erstellen, diese genauso formatieren wie die Zelle (Schriftart, -grösse, Breite, Höhe, Zeilenumbruch)
- Text in die TextBox schreiben
- per Schleife die Cursorposition vom ersten bist zum letzten Zeichen verschieben (SelPos) und prüfen, in welcher Zeile du dich befindest (CurLine), wenn sich die CurLine ändert, hast du einen Zeilenumbruch.
die CurLine ermittelt die tatsächliche Zeile im Textfeld, unabhängig davon ob harter oder bedingter Zeilenumbruch.
funktioniert nur wenn die TextBox den Focus hat.
Gruss Daniel

Anzeige
AW: Zeilenumbrüche in zellen finden
22.09.2015 14:14:11
Jörg
Danke für die schnelle Antwort. Das Problem ist auf jeden Fall richtig erfasst worden ;-)
Erscheint mir etwas umständlich und auch aufwändig, da ich ja für jede Position im Angebot die Textbox neu erstellen, füllen, durchlaufen und wieder löschen muß. Könnte mir dann mit der Angebotsanzeige etwas sehr lange dauern, da ich auch noch andere Schleifen drüber laufen lasse (Sortieren Reihenfolge, Sortieren nach Gruppen etc).
Kann ich das nicht auch direkt in der Zelle ohne den Umweg über die Textbox machen?

AW: Zeilenumbrüche in zellen finden
22.09.2015 14:17:25
Daniel
kann man vielleicht.
ich weiß aber nicht wie.
gehe mal davon aus, dass wenn ich einen einfacheren Weg kennen würde, ihn dir auch beschrieben hätte.
daher Frage wieder auf.
Gruß Daniel

Anzeige
geht schon
22.09.2015 20:10:24
Michael
Hallo zusammen,
es gibt zwei Möglichkeiten, die Höhe zu ermitteln, die ich beide hier ausgeführt habe:
Option Explicit
Sub hoehe()
Dim p As Double, p2 As Double, i&
Debug.Print
For i = 1 To 45
Debug.Print i & ": Zeilenhöhe=" & Rows(i).RowHeight
Debug.Print i & ": Zeilen TOP " & Range("A" & i).Top
p = p + Rows(i).RowHeight
p2 = p2 + Range("A" & i + 1).Top - Range("A" & i).Top
Next
Debug.Print "Zeilenhöhe ges " & p
Debug.Print "Zeilenhöhe Top " & p2
End Sub
Beim Herumprobieren habe ich festgestellt, daß eine Zelle mit Umbruch exakt die Zeilenhöhe der anderen Zeilen mal die Anzahl der umgebrochenen Zeilen hat, also etwa 90 für 6x15.
Das sind "Punkte", nicht Pixel, das kann man umrechnen, wenn man will.
Schau halt, wie hoch die Punkte bei den konkreten Einstellungen/Drucker usw. sind, dann kannst Du *vor* dem Beschreiben der jeweils nächsten Zelle mit c.Top ermitteln, wo sie anfängt und wieviele Punkte Du noch Platz hast bzw. wieviele Zeilen dann noch reinpassen (Anzahl der Punkte / Höhe einer Zelle mit nur einer Zeile).
Allerdings würde ich das eher ganz anders gestalten und alle Texte zeilenweise ohne Umbrüche schreiben, das ist nach meinem Geschmack insgesamt einfacher zu handeln.
Schöne Grüße,
Michael

Anzeige
Das geht nur mit einem sehr komplexen Pgm ...
22.09.2015 22:11:43
Luc:-?
…auf Basis der Korrelation zwischen Schriftgröße/-art/-schnitt, Spaltenbreite und Textlänge, Jörg,
abhängig auch vom Schrifttyp nicht-/proportional wie er bspw im Verhältnis von Courier zu Arial zum Ausdruck kommt. Außerdem müsste die Spaltenbreite in Point umgerechnet wdn, denn die drückt in Xl das Verhältnis Standard­Zeichen­Anzahl zu realer Spaltenbreite aus, ist also weder eine Pixel- noch cm-Angabe.
Wo Xl einen Zeilenumbruch einfügen könnte, kann man über die umbruch­relevanten (Satz-)Zeichen des Textes ermitteln, nicht oW aber, wo das tatsächlich geschieht. Hier wäre dann ein Pgm sinnvoll, das, näherungs­weise den obigen Vorgaben folgend, Zeilen­umbruchs­zeichen in den Text einfügt. Das könnte dann auch gleich noch bedingte Silben­trenn­zeichen (in HTML shy genannt) an markierter Stelle einfügen, was eine bessere Zeilen­Auslastung erlauben würde.
Falls die Texte nicht zu lang wdn, könnte hier auch eine UDF wie TxRows etwas helfen. Aber ich fürchte, die von dir gemeinten Problemtexte sind denn doch zu lang…
Gruß, Luc :-?
Besser informiert mit …
Anzeige

338 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige