Diese Antwort wurde automatisch übersetzt. Daher kann sie grammatikalische Fehler oder ungewöhnliche Formulierungen enthalten.
Hallo Frank,
bei dem von Ihnen beschriebenen Problem handelt es sich um eine bekannte Einschränkung von Excel selbst. Die Funktion „Zeilenumbruch“ funktioniert in Excel zwar bei verbundenen Zellen einwandfrei, jedoch greift die automatische Zeilenhöhenanpassung (AutoFit) bei Zeilen mit verbundenen Zellen nicht. Selbst wenn die Zellen später wieder getrennt werden, müssen Sie die Zeilenhöhe manuell anpassen, da die automatische Anpassung aufgrund der durch die verbundenen Zellen festgelegten Zeilenhöhe nicht zuverlässig funktioniert.
Für dieses Problem mit der automatischen Zeilenhöhenanpassung gibt es normalerweise zwei Lösungsansätze:
1/ Lösung ohne Makros: Vermeiden Sie nach Möglichkeit verbundene Zellen (dies ist die empfohlene Vorgehensweise).
Für ein stabiles Excel-Layout empfehle ich, anstelle von verbundenen Zellen die Option „Über Auswahl zentrieren“ zu verwenden. So umgehen Sie die Einschränkung bei der automatischen Zeilenhöhenanpassung und erhalten dennoch nahezu das gleiche Erscheinungsbild:
- Verwenden Sie anstatt des Verbindens von Zellen die Funktion: Zellen formatieren > Ausrichtung > Horizontal > Über Auswahl zentrieren. Auf diese Weise bleiben die Zellen technisch gesehen unverbunden, sodass Excel die Zeilenhöhe wesentlich zuverlässiger berechnen kann.
- Wählen Sie anschließend Zeile 8 aus, aktivieren Sie den „Zeilenumbruch“ und gehen Sie auf Start > Format > Zeilenhöhe automatisch anpassen.
2/ Verwendung von VBA
Wenn der Vorgang automatisch ablaufen soll, müssen Sie ein VBA-Skript verwenden, das Excel dazu veranlasst, die Zeilenhöhe bei jeder Neuberechnung des Arbeitsblatts automatisch anzupassen:
Hinweis: Dies ist ein VBA-Code für die Zelle D8, die bereits für Zeilenumbruch formatiert und deren Zeile auf automatische Anpassung eingestellt ist.
Private Sub Worksheet_Calculate()
Dim NewRwHt As Single
Dim cWdth As Single
Dim MrgeWdth As Single
Dim c As Range
Dim cc As Range
Dim ma As Range
On Error GoTo CleanExit
Application.ScreenUpdating = False
Application.EnableEvents = False
Set c = Me.Range("D8")
If c.MergeCells And c.WrapText Then
Set ma = c.MergeArea
cWdth = c.ColumnWidth
MrgeWdth = 0
For Each cc In ma.Cells
MrgeWdth = MrgeWdth + cc.ColumnWidth
Next cc
ma.MergeCells = False
c.ColumnWidth = MrgeWdth
c.EntireRow.AutoFit
NewRwHt = c.RowHeight
c.ColumnWidth = cWdth
ma.MergeCells = True
ma.WrapText = True
ma.RowHeight = NewRwHt
ElseIf c.WrapText Then
c.EntireRow.AutoFit
End If
CleanExit:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
- Um dieses VBA-Skript zu verwenden, drücken Sie Alt + F11, um den VBA-Editor zu öffnen. Suchen Sie das entsprechende Arbeitsblatt (z. B. Blatt1) und doppelklicken Sie darauf. Fügen Sie den Code in das Codefenster des Arbeitsblatts ein. Speichern Sie die Arbeitsmappe anschließend als Makro-fähige Arbeitsmappe (.xlsm).
Ich hoffe, diese Informationen helfen Ihnen weiter. Bei weiteren Fragen können Sie sich gerne in den Kommentaren zu diesem Beitrag melden. Ich helfe Ihnen gerne weiter.
Vielen Dank für Ihr Verständnis und Ihre Mitarbeit. Ich freue mich auf Ihre Antwort.
Wenn Ihnen die Antwort geholfen hat, klicken Sie bitte auf „Ja“ und geben Sie eine positive Bewertung ab.
Hinweis: Um E-Mail-Benachrichtigungen zu diesem Thema zu erhalten, folgen Sie bitte den Schritten in unserer Dokumentation.