Microsoft Excel

Herbers Excel/VBA-Archiv

ausdruck von wrapped text fehlerhaft | Herbers Excel-Forum


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

Du kannst ja solange mit den Konstanten herumprobieren, bis es einigermaßen passt.
Gruß
Roland Hochhäuser


  

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

Gruss- Micha


Beiträge aus den Excel-Beispielen zum Thema "ausdruck von wrapped text fehlerhaft"