Betrifft: ausdruck von wrapped text fehlerhaft
von: myles
Geschrieben am: 27.01.2010 17:05:05
moin moin,
ich habe folgendes problem: in einer tabelle sind einige zellen (einzeln, nicht verbunden) mit 'wrap text' und zeilenhoehe auf 'autofit' formatiert. das problem tritt nur bei umgebrochenem text auf. beim normalen arbeiten sieht alles korrekt aus. excel ist mit allen updates versorgt.
druckt man (auch druckvorschau) die seite aus, erscheint die letzte zeile des umgebrochenen texts nur zur haelfte - zeilenhoehe ist nicht ausreichend.
das problem habe ich im netz mehrfach beschrieben gefunden, jedoch keinen loesungsansatz. ist anscheinend ein excel problem. alternativ sollten zb. die nutzer alle 80-100 zeichen ein manuelles Alt+Enter einfuegen. das ist aber unbefriedigend.
meine idee war nun in vba zu pruefen, ob in der zelle ein zeilenumbruch vorhanden ist und dann die zeilenhoehe zu vergroessern. da haenge ich nun fest. hat jemand eine idee, wie man das ausknobelt?
das hier funktioniert nicht: InStr(1, ActiveSheet.Range("B" & i).Value, vbLf)
auch vbCrLf, Char(10) und Char(13) geben nicht das gewuenschte ergebnis. rueckgabewert ist immer null
fuer ideen waere ich sehr dankbar.
myles
Betrifft: AW: ausdruck von wrapped text fehlerhaft
von: Roland Hochhäuser
Geschrieben am: 28.01.2010 12:08:27
Hallo myles,
das kann nicht klappen; du suchst nach Umbruchzeichen, die es nicht gibt. Dies kannst du auch sehen: wenn du in eine Zelle z.B. eingibst: "dies ist ein langer text" und dann die Zelle mit Zeilenumbruch formatierst, ändert sich nichts; wenn du statt dessen einen manuellen Umbruch mit Alt - Enter ausführst, siehst du im Zellentext ein Rechteck in Höhe des manuellen Umbruches.
Ich würde deshalb als Workaround die Textlänge nehmen und davon abhängig die Zeilenhöhe festlegen, also was in der Art len(ActiveSheet.Range("B" & i).Text). Dazu musst du einfach mal experimentieren, das wird auch von der Spaltenbreite und der gewählten Schriftart abhängen.
Gruß von
Roland Hochhäuser
Betrifft: AW: ausdruck von wrapped text fehlerhaft
von: myles
Geschrieben am: 28.01.2010 14:44:24
Hallo Roland,
danke fuer deine antwort. ich werde das mal so probieren. das ergebnis poste ich dann hier.
nochmal danke... :)
myles
Betrifft: AW: ausdruck von wrapped text fehlerhaft
von: Roland Hochhäuser
Geschrieben am: 28.01.2010 18:17:02
Hallo, hier mal ein Ansatz:
Option Explicit
Function Zeilenhöhe(intChar As Integer) As Single Const Standardhöhe As Single = 12.75! ' "normale" Zeilenhöhe Const Zeilenumbruch As Integer = 12 ' nach wieviel Zeichen soll "erhöht" werden ? Zeilenhöhe = (Standardhöhe * (intChar \ Zeilenumbruch)) + Standardhöhe If Zeilenhöhe > 409.5 Then Zeilenhöhe = 409.5 ' mehr geht nicht End Function
Sub test() With ActiveCell .RowHeight = Zeilenhöhe(Len(.Text)) .WrapText = True End With End Sub
Betrifft: AW: ausdruck von wrapped text fehlerhaft
von: MichaV
Geschrieben am: 28.01.2010 21:44:04
Hallo,
wenn Du sowieso die Zeilenhöhe manuell festlegst (was den Nachteil hat dass die Zeile nicht automatisch wieder kleiner wird wenn Du den langen Text löschst) dann denke ich dass diese Variante etwas besser ist:
- Vergleiche jede Zeilenhöhe mit der "normalen" Zeilenhöhe (die Du aus der 1. Zeile abgreifst oder wie im obigen Bsp im Code festlegst)
- wenn eine Zeile eine grössere Höhe hat, dann steht wohl ein umgebrochener Text darin
- Erhöhe die Höhe dieser Zeile dann um 10 (oder 5 oder was weiss ich)
if rows(3).rowheight>rows(1).rowheight then rows(3).rowheight=rows(3).rowheight+10