2016-09-21 3 views
0

Ist es möglich, nur die Dropdown-Menü eines ComboBox in einer Userform automatisch anpassen an die Textgröße zu haben, ohne die tatsächliche Größe der ComboBox zu ändern?Excel ComboBox - automatisch anpassen Dropdown Nur

Ich habe einige Antworten gefunden, wie man die tatsächliche ComboBox basierend auf den Werten innerhalb autofit, aber das macht die Größe größer als ich eigentlich will (link here).

Das folgende Bild repräsentiert etwas, was ich versuche zu erreichen:

enter image description here

Wer weiß, ob dies überhaupt möglich ist?

+0

füllen Sie das Drop-down aus einer Reihe? –

+0

aus einer SQL-Abfrage Bestücken –

+3

Wenn die Daten auf dem Becher eines Arbeitsblatts Mat waren zeigen Ihnen, wie es hier tun: [eine ComboBox aus einem Bereich Bestücken] (http://codereview.stackexchange.com/questions/140995/populating-a -Combobox-aus-einem-Bereich/140999 # 140999). –

Antwort

2

Einige der Säulen scheinen ein wenig breit, aber über alles denke ich, der Code die Tropfen Konfiguration nach unten einen ziemlich guten Job macht.

enter image description here

Private Sub ConfigureComboBox() 
    Dim arrData, arrWidths 
    Dim x As Long, y As Long, ListWidth As Double 
    arrData = ComboBox1.List 
    ReDim arrWidths(UBound(arrData, 2)) 

    For x = 0 To UBound(arrData, 1) 
     For y = 0 To UBound(arrData, 2) 

      If Len(arrData(x, y)) > arrWidths(y) Then arrWidths(y) = Len(arrData(x, y)) 

     Next 
    Next 

    For y = 0 To UBound(arrWidths) 

     arrWidths(y) = arrWidths(y) * ComboBox1.Font.Size 
     ListWidth = ListWidth + arrWidths(y) 
    Next 

    With ComboBox1 
     .ColumnCount = UBound(arrWidths) + 1 
     .ColumnWidths = Join(arrWidths, ";") 
     .ListWidth = ListWidth 
    End With 

End Sub 

Beispieldaten aus Excel Sample Data

+0

Dies ist perfekt, danke –

+0

Cool..it war ich nette Follow up zu Mat's Mugs Arbeit. –