Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Automatisch Zeilenhöhe anpassen mit VBA

Automatisch Zeilenhöhe anpassen mit VBA
15.08.2004 23:54:59
Michael
Hallo,
ich möchte per Makro die Zeilenhöhe automatisch anpassen, wenn der in der Zelle eingegebene Text z.B. über 3 Zeilenumbrüche hinaus geht. Die Zeilenumbrüche macht Excel ja tadellos, geht mein Text aber darüber hinaus, soll Excel mir automatisch die Zeilenhöhe anpassen, bzw. erweitern.
Ist das möglich ?

Private Sub Worksheet_Change(ByVal Target As Range)
Rows("12:18").Select
Selection.Rows.AutoFit
Range("D7").Select
End Sub

mit dem Makro gehts schon mal nicht :-(
Gruß
Michael
Anzeige
AW: Automatisch Zeilenhöhe anpassen mit VBA
sicci
Hallo Michael,
automatisch anpassen kannst Du die Zeilenhöhe zB so:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Target.WrapText = True
End Sub

Bei meinem Excel97 liegt die Zeilenhöhenbegrenzung aber bei 409,5 pt
schau mal in der Excel-Hilfe unter Zeilenhöhe - 'Angaben zur Arbeitsumgebung' o.ä. wie es bei Deinem OfficeXP ist.
Gruß sicci
Anzeige
AW: Automatisch Zeilenhöhe anpassen mit VBA
16.08.2004 10:09:06
Michael
Hallo Sicci,
das funktioniert leider auch nicht, mehr wie 3 Zeilen untereinander bekomme ich nicht in die Zelle, alles was darüber hinaus geht an Text oder z.B. per manuellem Zeilenumbruch ( Alt + Enter ) in Zeile 4 stehen müsste verschwindet in der Unsichtbarkeit.
Gruß
Micha
Automatisch Zeilenhöhe anpassen mit VBA
Beate
Hallo Mich,
dann probier mal das (Code ins Codefenster der Tabelle):
Public Zeile As Integer

Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If ActiveCell.Row > 11 And ActiveCell.Row < 19  Then
Rows(Zeile).AutoFit
Zeile = ActiveCell.Row
End If
End Sub

Gruß,
Beate
Anzeige
AW: Automatisch Zeilenhöhe anpassen mit VBA
16.08.2004 11:34:49
Michael
Hi Beate,
das Makro funktioniert bei mir nur teilweise, wenn ich mehrere Zeilenumbrüche in Zelle A12 oder B12 habe, passt es mir automatisch die Zeilenhöhe an, soweit sogut, sobald ich aber in C12 mehrere Zeilenumbrüche habe, funktioniert das nicht mehr, er richtet sich immer nach dem Inhalt von Spalte A oder B. Muß allerdings dazu sagen, daß ich in den Zeilen 12 - 18 die Spalten C - K jeweils zu einer Zelle verbunden habe. Könnte es daran liegen ?
Danke schon mal
Gruß
Micha
Anzeige
Automatische Zeilenhöhe bei verbundenen Zellen
Beate
Hallo Micha,
die verbundenen Zellen verursachen das Problem. Dann nimm den Code (ins Codefenster der Tabelle):

Private Sub Worksheet_Change(ByVal Target As Range)
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range
Dim ActiveCellWidth As Single, PossNewRowHeight As Single
If ActiveCell.MergeCells Then
With ActiveCell.MergeArea
If .Rows.Count = 1 And .WrapText = True Then
Application.ScreenUpdating = False
CurrentRowHeight = .RowHeight
ActiveCellWidth = ActiveCell.ColumnWidth
For Each CurrCell In Selection
MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
Next
.MergeCells = False
.Cells(1).ColumnWidth = MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight = .RowHeight
.Cells(1).ColumnWidth = ActiveCellWidth
.MergeCells = True
.RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
CurrentRowHeight, PossNewRowHeight)
End If
End With
End If
Application.ScreenUpdating = True
End Sub

Gruß,
Beate
Anzeige
AW: Automatische Zeilenhöhe bei verbundenen Zellen
16.08.2004 12:13:50
Michael
Hi Beate,
hab das Makro reinkopiert, aber es klappt immer noch nicht...leider, bestimmt Bedienerfehler :-)
Aber erst mal Respekt, bei dem letzten Makro war mir ja noch so einigermaßen klar was da passiert, aber das hier übersteigt meine geringen VBA Kenntnisse bei weitem.
Kannst Du dir die Tabelle vielleicht mal anschauen, werde sie mal zu Herber hochladen, es geht um Tabelle 3 ( Montagebericht ) um die Zellen bei durchgeführte Arbeiten.
Das Ding hat sicherlich noch mehr Fehler, aber die sollte ich schon hinbekommen, die Sache mit der Automatischen Zeilenhöhe jedoch raubt mir noch den Verstand. :-(
https://www.herber.de/bbs/user/9690.xls
Vielen Dank
Gruß
Micha
Anzeige
Automatische Zeilenhöhe bei verbundenen Zellen
Beate
Hallo Micha,
mit dem Makro von eben lief es bei mir auch nicht, aber dann mit dieser Variante:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range
Dim ActiveCellWidth As Single, PossNewRowHeight As Single
If ActiveCell.Row > 11 And ActiveCell.Row < 19 Then
If ActiveCell.MergeCells Then
With ActiveCell.MergeArea
If .Rows.Count = 1 And .WrapText = True Then
Application.ScreenUpdating = False
CurrentRowHeight = .RowHeight
ActiveCellWidth = ActiveCell.ColumnWidth
For Each CurrCell In Selection
MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
Next
.MergeCells = False
.Cells(1).ColumnWidth = MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight = .RowHeight
.Cells(1).ColumnWidth = ActiveCellWidth
.MergeCells = True
.RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
CurrentRowHeight, PossNewRowHeight)
End If
End With
End If
End If
Application.ScreenUpdating = True
End Sub

Gruß,
Beate
Anzeige
AW: Automatische Zeilenhöhe bei verbundenen Zellen
16.08.2004 12:42:22
Michael
Hallo Beate,
also langsam bekomme ich ein schlechtes Gewissen, weil Du dir meinetwegen soviel Arbeit machst, aber ich hab es immer noch nicht ans laufen gebracht :-(
Hast Du dir mal die Datei runtergeladen ?
Gruß
Micha
Automatische Zeilenhöhe bei verbundenen Zellen
Beate
Hallo Micha,
hatte ich und hier ist sie Retour:
https://www.herber.de/bbs/user/9698.xls
Gruß,
Beate
PS: es handelt sich nicht um eine Eigenentwicklung - die Arbeit beschränkt sich aufs Raussuchen des Codes und eventuell Anpassen.
Anzeige
AW: Automatische Zeilenhöhe bei verbundenen Zellen
16.08.2004 13:23:57
Michael
Hi Beate,
also langsam glaube ich es liegt an meinem Excel hier, hab die Datei von Dir runtergeladen und es klappt einfach nicht, in Spalte A & B klappts jetzt auch nicht mehr....(verzweifel) !! Kann es sein, daß ich da was falsch eingestellt hab im Excel ?
Schönen (verzweifelten) Gruß
Micha
Anzeige
AW: Automatische Zeilenhöhe bei verbundenen Zellen
Beate
Hallo Micha,
ist dein System scharf? (Damit Worksheet_Change überhaupt anspringt?)
Lass vor dem nächsten Test mal kurz dieses Makro ablaufen oder starte Excel neu:

Sub Reset()
Application.EnableEvents = True
End Sub

Sonst fällt mir auch nichts mehr ein.
Gruß,
Beate
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Anpassen der Zeilenhöhe mit VBA in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Wähle das Arbeitsblatt aus, für das du die Zeilenhöhe automatisch anpassen möchtest.

  4. Füge den folgenden VBA-Code in das Codefenster ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
       Dim CurrCell As Range
       Dim ActiveCellWidth As Single, PossNewRowHeight As Single
    
       If ActiveCell.MergeCells Then
           With ActiveCell.MergeArea
               If .Rows.Count = 1 And .WrapText = True Then
                   Application.ScreenUpdating = False
                   CurrentRowHeight = .RowHeight
                   ActiveCellWidth = ActiveCell.ColumnWidth
                   For Each CurrCell In Selection
                       MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
                   Next
                   .MergeCells = False
                   .Cells(1).ColumnWidth = MergedCellRgWidth
                   .EntireRow.AutoFit
                   PossNewRowHeight = .RowHeight
                   .Cells(1).ColumnWidth = ActiveCellWidth
                   .MergeCells = True
                   .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
                                     CurrentRowHeight, PossNewRowHeight)
               End If
           End With
       End If
       Application.ScreenUpdating = True
    End Sub
  5. Schließe den VBA-Editor und teste das Makro, indem du Text in eine Zelle mit Zeilenumbrüchen eingibst.


Häufige Fehler und Lösungen

  • Problem: Excel passt die Zeilenhöhe nicht automatisch an.

    • Lösung: Überprüfe, ob die Zellen verbunden sind. Verbundene Zellen können das automatische Anpassen der Zeilenhöhe verhindern. Verwende den obigen Code, um sicherzustellen, dass die Zeilenhöhe bei verbundenen Zellen korrekt angepasst wird.
  • Problem: Die maximale Zeilenhöhe ist auf 409 pt begrenzt.

    • Lösung: Dies ist eine Einschränkung in älteren Excel-Versionen. Überlege, auf eine neuere Version von Excel zu wechseln, um die maximale Zeilenhöhe zu erweitern.

Alternative Methoden

  • Verwendung der Funktion AutoFit: Du kannst die Zeilenhöhe auch manuell anpassen, indem du die Zeilen auswählst und mit der rechten Maustaste auf „Zeilenhöhe anpassen“ klickst oder die Tastenkombination ALT + H + O + I verwendest.

  • Textumbruch aktivieren: Stelle sicher, dass der Textumbruch für die Zellen aktiviert ist, um die Zeilenhöhe bei mehrzeiligem Text anzupassen. Dies kannst du unter „Start -> Ausrichtung -> Textumbruch“ aktivieren.


Praktische Beispiele

  1. Einfaches AutoFit für eine gesamte Zeile:

    Rows("12:18").AutoFit
  2. Automatisches Anpassen der Zeilenhöhe bei Textumbruch:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Target.WrapText = True
       Target.Rows.AutoFit
    End Sub
  3. Automatische Zeilenhöhe für verbundene Zellen: Der oben angegebene Code passt die Zeilenhöhe automatisch an, wenn die Zellen verbunden sind und Textumbruch aktiviert ist.


Tipps für Profis

  • Verwende Application.EnableEvents = False: Um zu verhindern, dass das Makro sich selbst erneut auslöst, wenn die Zeilenhöhe geändert wird, setze Application.EnableEvents vorübergehend auf False.

  • Fehlerbehandlung: Nutze On Error Resume Next und On Error GoTo 0, um potenzielle Fehler im Code zu ignorieren und die Ausführung des Makros zu optimieren.

  • Teste deine Makros gründlich: Stelle sicher, dass du dein Makro in verschiedenen Szenarien testest, besonders bei verbundenen Zellen und verschiedenen Textumbrüchen.


FAQ: Häufige Fragen

1. Warum passt Excel die Zeilenhöhe nicht automatisch an?
Das kann an verbundenen Zellen oder an der maximalen Zeilenhöhe liegen, die in älteren Excel-Versionen beschränkt ist.

2. Wie kann ich die Zeilenhöhe bei Textumbruch automatisieren?
Aktiviere den Textumbruch in den Zellen und verwende den entsprechenden VBA-Code, um die Zeilenhöhe automatisch anzupassen.

3. Was passiert, wenn ich die maximale Zeilenhöhe überschreite?
Excel wird die Zeilenhöhe nicht mehr anpassen können, und Teile des Textes könnten unsichtbar bleiben. Überlege, die Zellen in kleinere Abschnitte aufzuteilen oder die maximale Zeilenhöhe zu überprüfen.

4. Gibt es eine Tastenkombination, um die Spaltenhöhe automatisch anzupassen?
Ja, die Tastenkombination ALT + H + O + I passt die Spaltenhöhe automatisch an.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige