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):