Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Autofit - rowheight

Forumthread: Autofit - rowheight

Autofit - rowheight
Joe
Hallo Leute,
ich würde gerne die optimalen Zeilenhöhe nur über die Zellen der Spalte 2 bestimmen lassen. Mit meinem Makro, ich hab schon unten stehenden Varianten ausprobiert, wird die optimale Zeilenhöhe auf Basis der Zelle mit den meisten Zeilenumbrüchen von allen Spalten bestimmt.
activecell.rows.rowheight.autofit
activecell.entirerow.autofit
columns(2).entirerow.autofit
usw.
Ich mach einen Kniefall, wenn mir jemand weiter helfen kann!.
Danke Euch
Joe
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Autofit - rowheight
15.03.2012 17:51:50
Rolf
Hallo Joe,
Sub...
Columns("B:B").Select
Selection.Rows.AutoFit
End Sub
?
Gruß, Rolf
AW: Autofit - rowheight
15.03.2012 19:37:02
Joe
Hallo Rolf,
danke für die rasche Antwort. Wenn ich Dein Code probiere richtet sich die Zellenhöhe nach der Zelle, die die meisten Zellenumbrüche hat.
Angenommen ich habe folgende Ausgangslage
Zelle A1 mit 2 Zeilen Text
Zelle B1 mit 3 Zeilen Text
Zelle C1 mit 4 Zeilen Text
Zelle D1 mit 5 Zeilen Text
dann stellt Dein Code genau wie mein Code die optimale Zellenhöhe bei 5 Zeilen ein, also gemäss Spalte "D". Meine Anforderung ist jedoch, dass sich die optimale Zellenhöhe nach der Zelle B1 ausrichtet, also nur 3 Zeilen hoch ist.
Ich hoffe ich konnte das anschaulich erklären. Was meinst Du, hast Du eine Idee?
LG. J
Anzeige
AW: Autofit - rowheight
15.03.2012 19:58:22
Joe
Hallo Rolf,
danke für die rasche Antwort. Wenn ich Dein Code probiere richtet sich die Zellenhöhe nach der Zelle, die die meisten Zellenumbrüche hat.
Angenommen ich habe folgende Ausgangslage
Zelle A1 mit 2 Zeilen Text
Zelle B1 mit 3 Zeilen Text
Zelle C1 mit 4 Zeilen Text
Zelle D1 mit 5 Zeilen Text
dann stellt Dein Code genau wie mein Code die optimale Zellenhöhe bei 5 Zeilen ein, also gemäss Spalte "D". Meine Anforderung ist jedoch, dass sich die optimale Zellenhöhe nach der Zelle B1 ausrichtet, also nur 3 Zeilen hoch ist.
Ich hoffe ich konnte das anschaulich erklären. Was meinst Du, hast Du eine Idee?
LG. J
Anzeige
AW: Autofit - rowheight
15.03.2012 20:37:12
Uduuh
Hallo,
das kannst du wohl nur über eine temporäre Tabelle lösen.
Sub SetRowHeight(wks As Worksheet, lngC As Long)
Dim wksTmp As Worksheet, lngRow As Long
On Error GoTo ErrExit
Application.ScreenUpdating = False
Set wksTmp = Worksheets.Add
wks.Columns(lngC).Copy wksTmp.Cells(1, 1)
wksTmp.Rows.AutoFit
With wksTmp
For lngRow = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
wks.Rows(lngRow).RowHeight = .Rows(lngRow).RowHeight
Next
Application.DisplayAlerts = False
.Delete
End With
ErrExit:
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub

Sub test()
SetRowHeight Sheets("Tabelle1"), 2
End Sub

Gruß aus’m Pott
Udo

Anzeige
AW: Autofit - rowheight
15.03.2012 20:59:33
Joe
Hallo Udo,
ich bin beeindruckt und danke Dir sehr.
Gruss aus Zürich
An Udo
16.03.2012 10:20:41
Joe
Hi Udo,
Du bist ein Künstler. Ich habe den Lösung in meinem Code eingebettet. Die Lösung funtkioniert einwandfrei. Vielen Dank!
Gruss und schönes Wochenende für den Pott.
J.
;
Anzeige

Infobox / Tutorial

Zeilenhöhe automatisch anpassen in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um die Zeilenhöhe in Excel automatisch anzupassen (Autofit), kannst Du den folgenden VBA-Code verwenden. Dieser Code setzt die Zeilenhöhe basierend auf einer bestimmten Spalte fest, z.B. Spalte B.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden Code in das Modul:

    Sub SetRowHeight(wks As Worksheet, lngC As Long)
       Dim wksTmp As Worksheet, lngRow As Long
       On Error GoTo ErrExit
       Application.ScreenUpdating = False
       Set wksTmp = Worksheets.Add
       wks.Columns(lngC).Copy wksTmp.Cells(1, 1)
       wksTmp.Rows.AutoFit
       With wksTmp
           For lngRow = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
               wks.Rows(lngRow).RowHeight = .Rows(lngRow).RowHeight
           Next
           Application.DisplayAlerts = False
           .Delete
       End With
    ErrExit:
       With Application
           .DisplayAlerts = True
           .ScreenUpdating = True
       End With
    End Sub
  4. Um die Funktion zu testen, füge diesen weiteren Sub an das Modul an:

    Sub test()
       SetRowHeight Sheets("Tabelle1"), 2
    End Sub
  5. Schließe den VBA-Editor und führe das test-Makro aus, um die Zeilenhöhe in der Spalte B anzupassen.


Häufige Fehler und Lösungen

  • Problem: Zeilenhöhe wird nicht korrekt angepasst.

    • Lösung: Überprüfe, ob die Zielspalte korrekt angegeben ist. Stelle sicher, dass die Spalte, die Du anpassen möchtest, die richtige ist.
  • Problem: Makro läuft nicht.

    • Lösung: Gehe sicher, dass die Makros in Excel aktiviert sind. Du kannst dies unter Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen überprüfen.

Alternative Methoden

Wenn Du eine einfachere Methode ohne VBA verwenden möchtest, kannst Du auch die Autofit-Funktion direkt in Excel nutzen:

  1. Markiere die Zeilen, die Du anpassen möchtest.
  2. Klicke mit der rechten Maustaste und wähle Zeilenhöhe anpassen.
  3. Wähle Autofit aus dem Kontextmenü.

Diese Methode ist jedoch nicht so flexibel wie die Verwendung von VBA, insbesondere wenn Du spezifische Anforderungen hast.


Praktische Beispiele

Angenommen, Du hast folgende Daten in Excel:

  • Zelle A1 mit 2 Zeilen Text
  • Zelle B1 mit 3 Zeilen Text
  • Zelle C1 mit 4 Zeilen Text
  • Zelle D1 mit 5 Zeilen Text

Mit dem obigen VBA-Code wird die Zeilenhöhe nur auf Basis der Zelle B1 (3 Zeilen) eingestellt, was Deinen Anforderungen entspricht.


Tipps für Profis

  • Experimentiere mit dem Application.ScreenUpdating Befehl. Setze ihn auf False, um die Performance zu verbessern, wenn Du mehrere Zeilen anpassen musst.
  • Du kannst die Funktion SetRowHeight auch in Kombination mit anderen VBA-Funktionen verwenden, um komplexere Layouts zu erstellen.

FAQ: Häufige Fragen

1. Wie kann ich die Zeilenhöhe für mehrere Spalten gleichzeitig anpassen?
Verwende eine Schleife in Deinem VBA-Code, um die Zeilenhöhe für jede gewünschte Spalte anzupassen.

2. Funktioniert dieser Code in Excel 2016 und späteren Versionen?
Ja, der Code ist mit Excel 2016 und späteren Versionen kompatibel. Achte darauf, dass Du die entsprechenden Berechtigungen für Makros hast.

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