AW: VBA - Anzeige ändern währen Scrollen durch Com
03.06.2008 15:00:52
fcs
Hallo Jogy,
eine Combobox hat ja schon noch ein paar Eigenschaften mehr als ListFillRange, Hintergrundfarbe und Font.
1. Wie erreichst Du bei Dir eigentlich, dass das ausgeklappte Listenfeld breiter ist als die ComboBox?
Eigenschaft ListWidth, diese steht standardmässig auf 0
2. Wie legst Du die Breite der Spalten fest?
ColumnWidths in der Form: 49,95 Pt;0 Pt;300 Pt;0 Pt;100 Pt
0 Pt für alle nicht anzuzeigenden Spalten
Über einen festen Wert in ColumnWidths ist es etwas ungeschickt, da dies sich ändern kann. Gibt es da eine dynamische Anpassung?
Die Dynamik müßtest du selber in der Initialisierungs-Prozedur des Userforms kreieren, indem du die Breite der Spalten an die Länge der zu erwartenden Texteinträge anpasst. Halte ich aber nicht für besonders sinnvoll.
Beispiel:
Private Sub UserForm_Initialize()
Dim dblBreite As Double, objZelle As Range, lngMaxLang As Long
'Comboxspaltenbreite dynamisch anpassen an Inhalt
With Worksheets("Tabelle2")
For Each objZelle In .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp))
If Len(objZelle.Value) > lngMaxLang Then lngMaxLang = Len(objZelle.Value)
Next
'Werte für Arial 10, getestet mit Ziffern 0 bis 9, _
die tatsächliche darstellbare Zeichenzahl hängt vom Text ab (Groß-/Kleinbuchstaben etc.)
Select Case lngMaxLang
Case Is 40: dblBreite = 260
Case Else
dblBreite = 60 + (lngMaxLang - 10) * 5.5
End Select
End With
Me.ComboBox1.ColumnWidths = "49,95 Pt;0 Pt;" & Format(dblBreite, "0") & " Pt;0 Pt;100 Pt"
Me.ComboBox1.ListWidth = 170 + dblBreite
End Sub
Gruß
Franz