Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
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

ListBox: Spaltenbreite an Inhalt anpassen

ListBox: Spaltenbreite an Inhalt anpassen
22.12.2014 20:33:37
Erik
Liebe Gemeinde,
ich sehe mich gerade einem Problem gegenüber, dass es "eigentlich" nicht geben dürfte, aber leider bei mir auftritt.
Zum Hintergrund
Ich habe ein UserForm, auf dem sich eine Listbox befindet, die ich mit Datensätzen aus einer Tabelle füttere. Zur besseren Übersicht möchte ich nun die Spaltenbreite an den jeweils längsten Inhalt der Spalte anpassen.
So gehe ich vor
Ich habe die ListBox mit einer nichtproportionalen Schriftart ("Consolas") gestaltet und lasse nun mit folgendem Code alle Spalten durchlaufen und einen entsprechenden String generieren, den ich dann an ListBox.columnwidths übergebe.

'Diese Funktion steht im Codebereich meiner UserForm
Private Function adjust_columns(ctrlListBox As MSForms.ListBox)
Dim r As Long
Dim c As Long
Dim this_length As Long
Dim max_length As Long
Dim arrLength() As Long
Dim strResult As String
With ctrlListBox
ReDim arrLength(.ColumnCount - 1)
For c = 0 To .ColumnCount - 1
max_length = 0
For r = 0 To .ListCount - 1
this_length = Len(.List(r, c))
If this_length > max_length Then
max_length = this_length
End If
Next r
arrLength(c) = max_length
Next c
For c = 0 To UBound(arrLength)
'der Faktor 0.35 ist veränderbar und sollte eigentlich mein Anliegen realisieren... :(
strResult = strResult & (arrLength(c) * 0.35) & "cm;"
Next c
.ColumnWidths = strResult
End With
End Function
Leider sieht mein Ergebnis überhaupt nicht so aus, obwohl ich eine Schriftart mit festen Zeichenbreite verwende.
So nun, liebe(r) Leser/-in, kannst du mir evtl. einen Tipp geben, worauf ich hier noch achten muss?
Mein Dank sei dir gewiss!
Gruß
Erik
Anhang (Screenshot):Userbild

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox: Spaltenbreite an Inhalt anpassen
23.12.2014 12:38:16
Erik
Hallo Tino,
vielen Dank für den Tipp. Ich hatte mich vor einer Weile schonmal mit dem ListView-Steuerelement befasst, hatte es aber dann sein gelassen, weil ich mich nicht reingefunden habe. Ich werde es mir also doch nochmal zu Gemüte führen.
Nur eine grundsätzliche Frage zu meinem Lösungsweg: Theoretisch ist doch mein Gedankengang mit nichtproportionaler Schriftart und ListBox richtig, oder?
Frohe Weihnachten und guten Start ins neue Jahr und auf diesem Weg: Vielen Dank allen bisherigen Helfern und Ideengebern!
Gruß
Erik

Anzeige
AW: ListBox: Spaltenbreite an Inhalt anpassen
23.12.2014 14:41:11
Tino
Hallo,
ja die Vorgehensweise sollte so in etwa hinkommen.
Du müsstest eben einen Faktor finden der genau ein Zeichen breit ist und
mit diesen die Anzahl multiplizieren.
Evtl. noch einen Rand hinzuaddieren.
In etwa so, hier Schrift Courier, Standard, Schriftgrad 10.
Private Function adjust_columns(ctrlListBox As MSForms.ListBox)
Dim i%, ii%, iii%, ColW$
Const sngFaktor! = 0.23
Const sngRand! = 0.2
For i = 0 To ListBox1.ColumnCount - 1
For ii = 0 To ListBox1.ListCount - 1
If Len(ListBox1.List(ii, i)) > iii Then
iii = Len(ListBox1.List(ii, i))
End If
Next ii
ColW = ColW & iii * sngFaktor + sngRand & "cm;"
iii = 0
Next i
ColW = Left(ColW, Len(ColW) - 1)
ListBox1.ColumnWidths = ColW
End Function
Gruß Tino
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge