Wie kann ich die Zeilenhöhe abhängig vom Zellinhalt anpassen?

2980
zarqos.os

Ich habe eine Tabelle mit einer Spalte und mehr als 200 Zeilen. Ich möchte die Höhen dieser Reihen je nach Inhalt anpassen.

Wenn zum Beispiel eine Zelle weniger als 10 Zeichen hat, muss die Zeile 25 Pixel haben und wenn sie mehr oder gleich 10 Zeichen ist, muss die Zeile 50 Pixel sein.

Diese Bilder können erklären, was ich machen möchte:

Vor

zu

nach dem

2
Die bedingte Formatierung kann die Zeilenhöhe nicht ändern. Sie können hier nur ein Makro verwenden. Ich verstehe jedoch nicht, warum Sie eine solche Formatierung benötigen. Máté Juhász vor 7 Jahren 0
Meine eigentliche Tabelle ist eine Rechnung, die eine Beschreibung der Elemente enthält. Wenn die Beschreibung zu lang ist, wird sie automatisch umbrochen, aber die Zelle zeigt nicht den gesamten Text an. Ich möchte keine automatischen Zeilenanpassungen verwenden, da ich meine eigenen verwenden möchte Werte ihrer Höhen. (Entschuldigung für mein schlechtes Englisch) zarqos.os vor 7 Jahren 0
Ihre Frage ist eigentlich nicht klar, weil die Telekommunikation in einer höheren Zelle zu sein scheint, aber nicht mehr als 20 Zeichen hat. Dave vor 7 Jahren 0
Ich habe die Frage bearbeitet und die zweite Aussage besteht aus mehr als 10 Zeichen :) zarqos.os vor 7 Jahren 0
zwei Anweisungen:> = 10 oder <10 :) zarqos.os vor 7 Jahren 0

2 Antworten auf die Frage

1
Dave

Dies basiert auf Ihrer unklaren Frage! Ich habe auch eine dynamische Option gepostet

Option Explicit Sub ChangeRowsColsInPixels() Dim r As Range  For Each r In ActiveSheet.UsedRange  Dim length As Integer length = Len(r.Value) If length > 0 Then If length < 10 Then  r.RowHeight = 25 End If  If length >= 10 Then r.RowHeight = 50 End If End If  Next r  End Sub 

Wie füge ich VBA in MS Office hinzu?

Sie haben nicht nach der Ausrichtung von Text in einer Zelle gefragt, aber Sie können middle aligndavon ausgehen, dass dies ausreicht

Sie scheinen auch keine Maßnahmen ergreifen zu wollen, wenn die Anzahl der Zeichen zwischen 10 und 20 liegt

Vor

enter image description here

Nach dem

enter image description here

Und mit Middle Align

enter image description here

Es funktioniert gut, aber gibt es eine Möglichkeit, dass dieses Makro automatisch ausgeführt wird, sobald ich die Eingabetaste drücke, wird das Makro wirksam? Übrigens habe ich meine Frage gestellt, weil ich bei der zweiten Aussage einen Fehler gemacht habe. zarqos.os vor 7 Jahren 0
Ja, ich habe sogar einen Link hinzugefügt, wie man ein Makro hinzufügt, das dies zeigt Dave vor 7 Jahren 0
Ich meine, wenn ich Daten in die Zelle eingebe und wenn ich die Eingabetaste drücke, um diese Daten zu bestätigen, wird das Makro automatisch ausgeführt. zarqos.os vor 7 Jahren 0
Schauen Sie sich meinen zweiten Beitrag an, der zeigt, was Sie mit dem `sub workheet_change` wollen Dave vor 7 Jahren 0
0
Dave

Als zweite Lösung für meinen anderen Beitrag wird dies einen dynamischeren Ansatz bieten, bei dem die Höhe basierend auf der Anzahl der Zeichen aktualisiert wird (dies wurde nicht ordnungsgemäß auf Obergrenzen / Maxima und daher mit einer langen langen Zeichenfolge getestet.) / value, es wird wahrscheinlich eine Ausnahme ausgelöst, daher habe ich ein hartcodiertes Limit hinzugefügt, das anscheinend um das Limit in Excel 2010 herum liegt.)

Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Dim defaultHeight As Integer defaultHeight = 25  Dim maxHeight As Integer maxHeight = 399  For Each r In ActiveSheet.UsedRange  Dim length As Integer length = Len(r.Value) If length > 0 Then Dim heightToUse As Double heightToUse = defaultHeight + length If (heightToUse > maxHeight) Then r.RowHeight = maxHeight Else r.RowHeight = heightToUse End If End If  Next r  End Sub 

Stellen Sie sicher, dass Sie es zu einem bestimmten Arbeitsblatt hinzufügen, da dieses ausgelöst wird und bei der Eingabe neuer Werte neu berechnet wird

Wie füge ich VBA in MS Office hinzu?

Vor
enter image description here

Nach (mit Middle Alignin der Registerkarte Ausrichtung des Menübands)

enter image description here

Ich habe diesen Code ausprobiert und funktioniert, aber ich stelle fest, dass die Höhe von der eingegebenen Textlänge abhängt, während ich möchte, dass er zwei Werte annimmt: 25 und 50 Pixel. zarqos.os vor 7 Jahren 0
ähm ... ja. Kannst du nicht verstehen, dass ich 2 Antworten gegeben habe? Dies ist ein dynamischerer Ansatz, da er möglicherweise für andere nützlich ist. Es enthält auch zusätzliche Informationen, z. B. die Aktualisierung im laufenden Betrieb (gut, wenn sich der Zellenwert ändert). Ich bin sicher, dass Sie die Bits von beiden Beiträgen verwenden können? Dave vor 7 Jahren 0