Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1844to1848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

automatisch Spaltenbreite bestimmen?

automatisch Spaltenbreite bestimmen?
17.09.2021 13:42:31
Andreas
Hallöchen lieben Forenmitglieder,
wollte mal wissen, ob es eine Möglichkeit gibt eine Spaltenbreite automatisch zu verändern.
Nehmen wir als Beispiel Spalte C. Wenn jetzt in Feld C1 z.B. eine 5 eintragen wird, sollte die Spalte auf Spaltenbreite 5 reduziert/erhöht werden.
Am besten wäre noch wenn man eine Spanne eingeben kann. Z.b. wenn 3-8 eingegeben wird dann wird die Spalte eben auf eine Breite von 5 angepasst : )
Kann mir gut vorstellen, dass sowas wenn überhaupt nur mit VBA möglich ist?
Vielen Dank vorab
Gruß Andreas

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: automatisch Spaltenbreite bestimmen?
17.09.2021 13:59:44
EtoPHG
Hallo Andreas,
was jetzt Spaltenbreite bestimmen oder Spaltenbreite automatisch verändern?
Dein Wunsch kann nur mit VBA erfüllt werden.
Z.B. so (im Tabellenblatt)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
Target.EntireColumn.AutoFit
End If
End Sub
Gruess Hansueli
AW: automatisch Spaltenbreite bestimmen?
17.09.2021 14:07:49
udo.d

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(1, ActiveCell.Column) = "" Then
ActiveCell.Columns.ColumnWidth = 1
Else
ActiveCell.Columns.ColumnWidth = Cells(1, ActiveCell.Column).Value
End If
End Sub
Vielleicht so, dies im Tabellenblatt selbst verankern ... im Change Ereignis ...
LG udo
Anzeige
AW: automatisch Spaltenbreite bestimmen?
17.09.2021 14:08:48
Andreas
Hey Han,
vielen Dank für deine Rückmeldung :)
Das geht schon in die richtige Richtung.
Automatisch verändern, ist denke ich was ich brauche.
Allerdings soll das nachher variabel sein.
Wenn also dann z.B. eine 100 eingegeben wird, soll die Spalte wieder breiter werden.
Vielen Dank vorab
Gruß Andreas
AW: automatisch Spaltenbreite bestimmen?
17.09.2021 14:15:44
udo.d

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(1, ActiveCell.Column) = "" Then
ActiveCell.Columns.ColumnWidth = 1
Else
Target.EntireColumn.AutoFit
ActiveCell.Columns.ColumnWidth = ActiveCell.Columns.ColumnWidth + 3
End If
End Sub
anstatt +3 auch +Cells(1, ActiveCell.Column).value usw...
?
LG Udo
Anzeige
AW: automatisch Spaltenbreite bestimmen?
17.09.2021 15:53:18
Andreas
Hi Udo,
auch an dich ein herzliches Dankeschön für deine Hilfe.
Das habe ich allerdings nicht verstanden:
anstatt +3 auch +Cells(1, ActiveCell.Column).value usw...
Kannst du mir das bitte genauer erklären?
Vielen Dank vorab und ein schönes Wochenende
Gruß Andreas
AW: automatisch Spaltenbreite bestimmen?
17.09.2021 14:24:26
UweD
Hallo
in den Codebereich der Tabelle

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Z, MMin As Integer
MMin = 5 'Mindestbreite
If Not Intersect(Target, Rows(1)) Is Nothing Then
For Each Z In Target
Z.Columns.ColumnWidth = WorksheetFunction.Max(MMin, Z.Value)
Next
End If
End Sub
Bei Eingabe eines Wertes in Zeile 1 wird die eingegebene Breite eingestellt (Mindestbreite wählbar)
Auch bei Eingabe in mehrerer Zellen ...
LG UweD
Anzeige
AW: automatisch Spaltenbreite bestimmen?
17.09.2021 15:55:43
Andreas
Hui Uwe,
das ist glaube ich genau dass was ich gesucht habe :D
Muss noch ein bisschen rumspielen damit, aber bisher sieht es super aus!
Vielen Dank an dich und ein schönes Wochenende.
Gruß Andreas
Danke und noch eine Verbessereung
17.09.2021 16:14:10
UweD
Hallo nochmal
falls du mal aus Versehen ganze Spalten markierst und änderst, würde das Makro sich totlaufen
So arbeitet es nur Zeile 1 ab

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Z, MMin As Integer, RNG As Range
MMin = 5 'Mindestbreite
Set RNG = Intersect(Target, Rows(1))
If Not RNG Is Nothing Then
For Each Z In RNG
Z.Columns.ColumnWidth = WorksheetFunction.Max(MMin, Z.Value)
Next
End If
End Sub
LG UweD
Anzeige
AW: Danke und noch eine Verbessereung
20.09.2021 09:23:15
Andreas
Vielen Dank Uwe :D
Gruß Andreas
AW: Danke und noch eine Verbessereung
20.09.2021 15:11:45
Andreas
Hallo Uwe,
hoffentlich ließt du das hier noch, und vielleicht weißt du Rat.
Die Werte aus der ersten Zelle, werden jetzt mit einer Indexformel ermittelt.
Dann funktioniert aber leider die VBA nicht mehr :(
Es kommt kein Fehler, aber die Spaltenbreite passt sich einfach nicht mehr automatisch an.
Dachte dann vielleicht geht es wenn ich es als Calculate Event anlege, aber das hat nichts gebracht :/
Vielleicht weißt du oder jemand anderes Rat?
Vielen Dank vorab
Gruß Andreas
AW: automatisch Spaltenbreite bestimmen?
17.09.2021 14:14:26
Pierre
Hallo Andreas,
z. B. so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
For i = 1 To Sheets(2).Cells(1, Columns.Count).End(xlToLeft).Column
Select Case Cells(1, i).Value
Case 3 To 8
Columns(i).ColumnWidth = 5
Case 9 To 14
Columns(i).ColumnWidth = 10
Case 15 To 22
Columns(i).ColumnWidth = 20
Case Else
Columns(i).ColumnWidth = 10.71
End Select
Next i
End Sub
Du musst natürlich angeben, innerhalb welches Wertbereiches dann welche Breite eingestellt werden soll. Unter "Case Else" habe ich, wenn eine Zahl eingegeben wird, die in diesem Fall über 22 ist, oder ein Wort oder sonstiges, wird die Breite auf den Standard von 10,71 (Punkt als Dezimalzeichen!) bzw. 80 Pixel eingestellt.
Den Bereich kannst du beliebig erweitern, nach 22 hatte ich keine Lust mehr ;-)
Gruß Pierre
Anzeige
AW: automatisch Spaltenbreite bestimmen?
17.09.2021 15:50:00
Andreas
Hey Pierre,
vielen Dank für deinen Lösungsvorschlag : )
Leider bin ich wohl zu doof :(
Kannst du mir sagen wo ich den Wertbereich einstellen kann?
Habe einfach mal eine Excel genommen und deine VBA reinkopiert.
Gebe ich jetzt aber in irgendeiner Spalte in Zeile 1 eine Zahl ein, kommt eine Fehlermeldung.
Er reklamiert diese Zeile:
For i = 1 To Sheets(2).Cells(1, Columns.Count).End(xlToLeft).Column
Falls du mir das noch etwas genauer erklären könntest, wäre ich dir sehr Dankbar : )
Gruß und ein schönes Wochenende
Andreas
AW: automatisch Spaltenbreite bestimmen?
20.09.2021 08:15:12
Pierre
Hallo Andreas,
sorry, bin erst heute wieder hier im Forum unterwegs.
Falls du das noch liest:
Das ist so ein Ding von mir, dass ich diese Zeile oft in den Code reinpacke, damit der Code wirklich nur bis zur letzten genutzten Spalte (oder auch Zeile) arbeitet und nicht ungewollt in einen Fehler rennt.
Leider weiß ich auch nicht (weil es bisher immer so geklappt hat und ich mich nicht mit Alternativen beschäftigt habe), wie man dies anders ermitteln kann.
Ich vermute mal, dass du mindestens 2 Spalten in Zeile 1 befüllt haben musst, damit es geht.
Wenn du ab z. B. Zeile 2 eine fertige Tabelle hast, die Zeile 1 prinzipiell leer ist, dann tausch mal die "1" in der Zeile

Cells(1, Columns.Count)
durch eine 2 aus.
Diese Zeile dient, wie gesagt, lediglich der Ermittlung der letzten genutzten Spalte.
Deinen Wertebereich kannst du in den nachfolgenden Codezeilen ändern, als Beispiel:

Case 3 To 8
Columns(i).ColumnWidth = 5
Wenn in A1 eine 3 oder 4 oder 5 oder ... 8 eingetragen wird, stellt sich die Breite immer auf 5.
Ab Eintragung 9 bis 14 stellt sie sich auf 10, usw.
Das sind von mir willkürlich erdachte Werte, die du nach deinem Gusto anpassen kannst und mit weiteren "Case ... To ..." Blöcken kannst du natürlich auch über die von mir als 22 festgelegte Obergrenze hinaus immer weiter arbeiten.
Schaffst du das mit dieser Erklärung? Ansonsten könnte ich dir das natürlich auch abändern, wenn du mir genauen Daten von welcher Zahl bis zu welcher Zahl dann welche Breite verwendet werden soll, mitteilst.
Anderenfalls hast du ja genügend Alternativen, mit denen du ebenfalls arbeiten kannst ;-)
Gruß Pierre
Anzeige
AW: automatisch Spaltenbreite bestimmen?
20.09.2021 15:23:35
Andreas
Hi Pierre,
vielen Dank das du dir nochmal soviel Arbeit gemacht hast :)
Bin gerade mit der Lösung von Uwe unterwegs, die konnte ich schneller umsetzen bin ja leider VBA-Legastheniker und immer froh wenn's so einfach wie möglich geht =D
Deine Lösung habe ich mir auf jeden Fall abgespeichert und werde diese auch noch testen, wenn du dir schon soviel Mühe machst :)
Gruß Andreas
Bitteschön (owT)
20.09.2021 15:27:41
Pierre

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige