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

Forumthread: Auto Zeilenhöhe mit Mindesthöhe

Auto Zeilenhöhe mit Mindesthöhe
16.10.2019 11:43:52
Niko
Hallo an alle,
habe folgendes Problem. Möchte in meinem vorhandenen VBA script die Zeilenhöhe automatisieren je nach Text Zeilen aber gleichzeitig sollen die Zeilen nicht kleiner als 20 sein.
Wie kann ich das im vorhandenen Script bewerkstelligen ohne die anderen Funktionen zu verändern?
Ps. Habe in den script den befehl - Rows("10:1009").RowHeight = 20 – eingefügt doch dadurch werden die Zeilen nicht größer bei Text mit mehr Zeilen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, Berechnung As Long
Berechnung = Application.Calculation
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = False
Me.Unprotect ("1234")
Set Bereich = Intersect(Target, Range("A15:A1009"))
If Not Bereich Is Nothing Then
Application.EnableEvents = False
Range("A15:A1009").EntireRow.Hidden = False
Rows("10:1009").RowHeight = 20
Range("A" & 48 + WorksheetFunction.CountA( _
Range("A15:A1009")) & ":A1009").EntireRow.Hidden = True
End If
Me.Protect ("1234")
Application.EnableEvents = True
Application.Calculation = Berechnung
Application.ScreenUpdating = True
End Sub

Danke allen im Voraus :-)
Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auto Zeilenhöhe mit Mindesthöhe
16.10.2019 11:48:14
Pierre
Hallo,
mit

Rows("1:100").EntireRow.AutoFit
sollte es gehen.
Gruß Pierre
AW: Auto Zeilenhöhe mit Mindesthöhe
16.10.2019 12:06:06
Niko
Hi Pierre,
automatisch würde es dann funktionieren doch damit funktioniert nicht die mindesthöhe von 20 wenn Leer.
AW: Auto Zeilenhöhe mit Mindesthöhe
16.10.2019 12:23:53
Pierre
Jap, sorry.
Ich meinem Eifer habe ich das wieder total vergessen.
Anzeige
ungetestet
16.10.2019 11:49:32
lupo1
With Rows("10:1009").RowHeight
.Autofit
If .Value &lt 20 Then .Value = 20
End With
(evtl. muss RowHeight reingezogen werden)
AW: ungetestet
16.10.2019 12:02:36
Niko
Danke für die schnelle antwort...doch funktionieren tut es nicht im vorhandenen script.
Kann sein, dass es im Block so nicht geht, ...
16.10.2019 12:05:13
lupo1
... sondern nur einzeln via Schleife.
Anzeige
Daniels Idee ist sehr gut, schnell, ressoucensp.
16.10.2019 12:06:52
lupo1
AW: Auto Zeilenhöhe mit Mindesthöhe
16.10.2019 12:00:56
Daniel
Hi
automatische Zeilenhöhe mit Mindesthöhe geht am einfachsten so:
formatiere eine freie Spalte am Tabellenende mit einer Schriftgröße, welche dir mit einer Zeile die gewünschte Mindestzeilenhöhe ergibt.
Dann ganz normal das Autofit ausführen.
gruß Daniel
Das widerspricht der TE-Schilderung
16.10.2019 12:04:08
lupo1
... denn mit der gewünschten Schriftart entsteht &lt20.
Anzeige
sorry, "freie Spalte" nicht gelesen. Stimmt.
16.10.2019 12:05:56
lupo1
AW: sorry, "freie Spalte" nicht gelesen. Stimmt.
16.10.2019 12:32:04
Niko
Hallo lupo1,
könntest du mir bitte den ganzen script senden um verstehen zu können wie dies funktionieren soll?
Danke,
Niko
Z:Z ist leer ... In A:A stehen Deine Daten
16.10.2019 12:42:56
lupo1
...
Columns("Z:Z").Font.Size = 20
Columns("A:A").Rows.AutoFit
...
Anzeige
AW: Z:Z ist leer ... In A:A stehen Deine Daten
16.10.2019 13:15:46
Niko
Hi,
die Zeilen Höhe auf Minimum 20 und gleichzeitig automatisch die Größe ändern wenn mehrere Text reihen vorhanden sind...bezieht sich auf denselben Bereich.
d.h dieselbe Zeile darf nicht unter 20 höhe sein und gezeitigt sich automatisch der Größe anpassen (wenn über 20 höhe) wenn Text reihen mehr werden.
...und dies alles in den vorhandenen script.... Wie? ____thx in advance :-)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, Berechnung As Long
Berechnung = Application.Calculation
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = False
Me.Unprotect ("1234")
Set Bereich = Intersect(Target, Range("A15:A1009"))
If Not Bereich Is Nothing Then
Application.EnableEvents = False
Range("A15:A1009").EntireRow.Hidden = False
Range("A" & 48 + WorksheetFunction.CountA( _
Range("A15:A1009")) & ":A1009").EntireRow.Hidden = True
End If
Me.Protect ("1234")
Application.EnableEvents = True
Application.Calculation = Berechnung
Application.ScreenUpdating = True
End Sub

Anzeige
Mitnichten ...
16.10.2019 13:37:09
lupo1
Nur durch das Einstellen eines anderen Bereichs auf die Mindestgröße über fiktive Inhalte der gewünschten Größe bekommst Du eine Mindesthöhe im gewünschten Bereich ohne Einzelbearbeitung hin.
Daniels Vorgabe war optimal.
AW: Z:Z ist leer ... In A:A stehen Deine Daten
16.10.2019 13:47:54
Daniel
also nochmal für dich, weil du offensichtlich nicht verstehts, was man dir sagt:
im Code reicht diese Änderung:
If Not Bereich Is Nothing Then
Application.EnableEvents = False
Range("A15:A1009").EntireRow.Hidden = False
     Range("A15:A1009").EntireRow.Autofit
     Range("A" & 48 + WorksheetFunction.CountA( _
Range("A15:A1009")) & ":A1009").EntireRow.Hidden = True
End If
du musst allerdings vorher in der Tabelle von Hand in einem freien Bereich ohne Inhalte (vielleicht Z15:Z1009) die Schriftgröße auf 20 (oder einen anderen Wert) setzen. dh in diesen Zellen eine Kombination aus Schriftart und -größe einstellen, welche schon mit einer einzigen Textzeile die gewünschte Mindestzeilenhöhe ergeben würde.
Excel berücksichtigt dies dann beim Automatischen ermitteln der Zeilenhöhe, auch dann, wenn diese Zellen leer sind.
Gruß Daniel
Anzeige
weitere Vorteil dieser Methode
16.10.2019 13:49:13
Daniel
das funktioniert auch, wenn du von Hand die Zeilenhöhe automatisch anpasst (Doppelklick auf auf den Rand in den Zeilenköpfen)
Gruß Daniel
AW: weitere Vorteil dieser Methode
16.10.2019 14:22:00
Niko
Hi Daniel,
das lupo1 nicht dran schuld ist...ist mehr als korrekt :-)
das ich als nicht wissender schwer von Begriff bin...ist auch korrekt :-)
doch dies alles beruht wie du rechtens darauf hingewiesen hast auf meine Unwissenheit :-(
...die ich versuche zu erleuchten...zwar nicht mit großen Erfolg...aber versuchen tue ich es :-))
Wie auch immer, um es besser verstehen zu können sende ich mal die Datei.
Habe zwar versucht wie du gesagt hast in eine Zeile (1009) auf Höhe 20 zu setzen doch es klappt nicht. Irgendwas mache ich falsch :-( …und bekomme es nicht mal mit.
Wenn du es mir in dieser Datei verdeutlichen würdest wie dies geschehen soll, würde es mir sehr helfen.
https://www.herber.de/bbs/user/132555.xlsm
Danke im Voraus und sry wenn ich mit meiner Unwissenheit auf die Nerven gehe…es ist nicht meine Absicht, auch wenn meine Unwissenheit diesen Anschein vermittelt :-)
Anzeige
AW: weitere Vorteil dieser Methode
16.10.2019 14:31:57
Daniel
Lösch das Makro und nimm dir einen persönlichen Coach.
wenn ich schreibe: "formatiere eine freie Spalte"
und du machst daraus " in eine Zeile (1009)" dann werden wir ewig aneinander vorbeireden und es wird schwierig, dir über das Forum zu helfen.
Du brauchst persönliche Beratung und die kann ein Forum nicht leisten.
Gruß Daniel
Anzeige
AW: weitere Vorteil dieser Methode
16.10.2019 14:45:16
Niko
Jetzt hat es gefunzt...Spalte!!!
Wollte doch Zeilen einstellen und nicht spalten...war voll auf Zeile fixiert.
wie hängt dies logisch zusammen, dass dadurch die Zeilen auf die Höhe formatiert werden?
Ist alles Ok jetzt, es funktioniert...auch wenn ich den Zusammenhang nicht verstehen kann.
Ps. Ich weiß das ich Geduld strapazieren kann, doch wenn ich es nicht tue werde ich es auch nie lernen.
Danke,
Niko
Anzeige
AW: weitere Vorteil dieser Methode
16.10.2019 14:57:13
Daniel
ja klar
in jeder Zeile willst du die Zeilenhöhe einstellen und daher brauchst du in jeder Zeile eine Zelle, welche dir bei der automatischen Ermittlung der Zeilenhöhe die die mindestzeilenhöhe ergibt.
und die bekommt man am einfachsten, wenn man in einer Spalte den Schriftgrad entsprechend einstellt.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilenhöhe in Excel Automatisch Anpassen mit Mindesthöhe


Schritt-für-Schritt-Anleitung

Um die Zeilenhöhe in Excel automatisch anzupassen und gleichzeitig eine Mindesthöhe festzulegen, kannst du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

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

  2. Füge ein neues Modul hinzu (Einfügen > Modul).

  3. Kopiere und füge den folgenden Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim Bereich As Range
       Dim Berechnung As Long
       Berechnung = Application.Calculation
       Application.Calculation = xlCalculationAutomatic
       Application.ScreenUpdating = False
       Me.Unprotect ("dein_passwort")
    
       Set Bereich = Intersect(Target, Range("A15:A1009"))
       If Not Bereich Is Nothing Then
           Application.EnableEvents = False
           Range("A15:A1009").EntireRow.Hidden = False
           Range("A15:A1009").EntireRow.AutoFit
           Dim Zeile As Range
           For Each Zeile In Range("A15:A1009")
               If Zeile.RowHeight < 20 Then
                   Zeile.RowHeight = 20
               End If
           Next Zeile
           Range("A" & 48 + WorksheetFunction.CountA(Range("A15:A1009")) & ":A1009").EntireRow.Hidden = True
       End If
    
       Me.Protect ("dein_passwort")
       Application.EnableEvents = True
       Application.Calculation = Berechnung
       Application.ScreenUpdating = True
    End Sub
  4. Passe den Bereich A15:A1009 und das Passwort an deine Bedürfnisse an.

  5. Schließe den VBA-Editor und teste die Funktion, indem du Text in den angegebenen Bereich eingibst.


Häufige Fehler und Lösungen

  • Zeilenhöhe wird nicht automatisch angepasst: Stelle sicher, dass die AutoFit-Funktion korrekt aufgerufen wird. Überprüfe auch, ob du die richtige Range im VBA-Code verwendet hast.

  • Mindesthöhe wird nicht beachtet: Achte darauf, dass der Schleifen-Code zur Überprüfung der Zeilenhöhe korrekt implementiert ist.

  • VBA-Sicherheitseinstellungen: Wenn der Code nicht funktioniert, überprüfe die Makrosicherheitseinstellungen in Excel und aktiviere die Ausführung von Makros.


Alternative Methoden

Wenn du keine VBA-Lösung verwenden möchtest, kannst du die Mindestzeilenhöhe manuell einstellen:

  1. Wähle die Zeilen aus, die du anpassen möchtest.
  2. Klicke mit der rechten Maustaste und wähle Zeilenhöhe.
  3. Gib 20 als Mindesthöhe ein.

Um die Zeilenhöhe automatisch anzupassen, kannst du Doppelklick auf den Rand der Zeilenköpfe machen, aber dies berücksichtigt nicht die Mindesthöhe.


Praktische Beispiele

  1. VBA Beispiel: Das obige VBA-Skript stellt sicher, dass die Zeilenhöhe in der Range A15:A1009 automatisch angepasst wird, aber niemals unter 20 fällt.

  2. Manuelles Beispiel: Eine Tabelle mit langen Texten in Spalte A kann manuell bearbeitet werden, um die Zeilenhöhe auf 20 zu setzen und dann AutoFit zu verwenden.


Tipps für Profis

  • Nutze die Worksheet_Change-Ereignisprozedur, um automatisch auf Änderungen in deinem Arbeitsblatt zu reagieren.
  • Du kannst auch Conditional Formatting verwenden, um visuelle Hinweise zu geben, wenn die Zeilenhöhe unter einer bestimmten Höhe liegt.
  • Teste den VBA-Code in einer Kopie deiner Arbeitsmappe, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie setze ich die Mindestzeilenhöhe in Excel ohne VBA?
Du kannst die Zeilen manuell auswählen, mit der rechten Maustaste klicken und die Zeilenhöhe auf 20 einstellen.

2. Warum wird die Zeilenhöhe nicht automatisch angepasst?
Das kann an falschen Einstellungen im VBA-Code oder an Excel-Sicherheitseinstellungen für Makros liegen. Überprüfe auch, ob die Formatierung der Zellen korrekt ist.

3. Wie kann ich die Mindesthöhe für mehrere Zeilen in Excel festlegen?
Verwende den obigen VBA-Code, um die Mindesthöhe für einen bestimmten Bereich festzulegen und gleichzeitig die Höhe automatisch anzupassen.

4. Funktioniert dies auch in Excel Online?
Die VBA-Lösungen funktionieren nicht in Excel Online. Du musst die Funktionalität in der Desktop-Version verwenden.

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