Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zeilenhöhe anpassen/richtig setzen

Betrifft: Zeilenhöhe anpassen/richtig setzen von: TommiH
Geschrieben am: 11.08.2008 23:28:04

Hallöchen,
ich kämpfe immer noch mit einem komische Problem.
Ich habe eine Exceldatei mit ca. 11000 Zeilen (Arial). Wenn ich diese Datei in der Vorschau anschaue, dann werden manchmal, besonders gerne bei umgebrochenen Texten, Teile einzelner Zellen abgeschnitten, also nicht eine ganze Zeile, sondern Teile EINER! Zeile (i.d.R. der letzten Zeile einer Zelle).
Das Selbe passiert, wenn ich die Datei in ein PDF-File schreibe. Kennt jemand das Problem?

Umgehen will ich es nun mit folgender Schleife:

For y = 1 To AnzZeilen
Rows(y).RowHeight = Rows(y).RowHeight * 1.2
Next y

Das funktioniert zwar, dauert aber EWIG :) - kann man das irgendwie mit einem Trick beschleunigen?
Noch besser wäre natürlich das Ausgabeproblem zu lösen, die Zeilen auf Zeilenhöhe zu optimieren klappt auf alle Fälle nicht. Und ich habe festgestellt, mit einem Courier-Zeichensatz wid das Problem kleiner/seltener. Aber weg geht es leider nicht ganz.

LG,
Thomas

  

Betrifft: AW: Zeilenhöhe anpassen/richtig setzen von: Ramses
Geschrieben am: 11.08.2008 23:55:14

Hallo

"...bei umgebrochenen Texten..."
Es gibt eine Limitierung der maximalen Zeichenzahl und der maximalen Zeilenhöhe.
Vielleicht findest du hier was entsprechendes
http://www.xlam.ch/xlimits/index.htm

Zum Beschleunigen vielleicht so

Rows("1:" & AnzZeilen).RowHeight = Rows("1:" & AnzZeilen).RowHeight * 1.2

Dann brauchst du keine Schleife

Gruss Rainer


  

Betrifft: AW: Zeilenhöhe anpassen/richtig setzen von: TommiH
Geschrieben am: 12.08.2008 00:04:01

Hallo Rainer,

hmm, diese Zeile Rows("... bewirkt bei mir allerdings nichts, kein Fehler, aber auch keine Aktion...

LG,
Tommi


  

Betrifft: AW: Zeilenhöhe anpassen/richtig setzen von: Erich G.
Geschrieben am: 12.08.2008 06:55:48

Hi Tommi,
dass sich da nichts tut, ist klar, wenn die Zeilen keine einheitliche Höhe haben.
Rows("1:" & AnzZeilen).RowHeight liefert dann Null (nicht 0).

Mit dem Code hat Rainer vermieden, dass unterschiedliche Zeilenhöhen unbeabsichtigt vereinheitlicht werden.

Wollte man das, wäre z. B. das hier ausreichend:
Rows("1:" & AnzZeilen).RowHeight = Rows(1).RowHeight * 1.2

Da du die unterschiedlichen Höhen wohl beibehalten willst (nur etwas höher),
ist eine Schleife erforderlich.
Dann stellt sich die Frage: Hast du bisher die Bildschirmaktualisierung ausgeschaltet?
Wenn nicht, probier mal z. B. das hier:

Sub test()
   Dim lngAnz As Long, lngZ As Long
   Dim Calc As XlCalculation
   Calc = Application.Calculation: Beschleuniger xlCalculationManual
   
   lngAnz = Cells(Rows.Count, 1).End(xlUp).Row
   For lngZ = 1 To lngAnz
      Rows(lngZ).RowHeight = Rows(lngZ).RowHeight * 1.2
   Next lngZ

   Beschleuniger Calc
End Sub


Sub Beschleuniger(StatCal As XlCalculation)
'Aufruf:
'   Dim Calc As XlCalculation
'   Calc = Application.Calculation: Beschleuniger xlCalculationManual
'   ....Code....
'   Beschleuniger Calc
   Application.Calculation = StatCal
   Application.ScreenUpdating = (StatCal <> xlCalculationManual)
End Sub

Solche Beschleuniger gibts im Archiv etliche, schau hier auch mal nach GetMoreSpeed oder GMS.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Zeilenhöhe anpassen/richtig setzen von: Reinhard
Geschrieben am: 12.08.2008 06:59:15

Hi Tommi,

bist du da sicher? Probier dies mal:

Sub tt()
Dim AnzZeilen
AnzZeilen = 20
Rows("1:" & AnzZeilen).RowHeight = Rows("1:" & AnzZeilen).RowHeight * 1.2
MsgBox Rows(20).RowHeight
MsgBox Rows(21).RowHeight
End Sub



Oder so:

Rows("1:" & AnzZeilen).RowHeight = Rows(1).RowHeight * 1.2

Gruß
Reinhard


 

Beiträge aus den Excel-Beispielen zum Thema "Zeilenhöhe anpassen/richtig setzen"