Excel ComboBox - 仅自动调整下拉列表

时间:2016-09-21 18:29:51

标签: excel-vba vba excel

是否可以将UserForm自动调整中ComboBox的下拉菜单设置为文本大小,而不更改ComboBox的实际大小?

我已经找到了一些关于如何根据其中的值自动调整实际ComboBox的答案,但这会使得大小比实际需要的大(link here)。

以下图片有点代表我正在努力实现的目标:

enter image description here

有人知道这是否可能吗?

1 个答案:

答案 0 :(得分:2)

有些列似乎有点宽,但总的来说,我认为代码在配置下拉列表方面做得非常好。

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

来自Excel Sample Data

的示例数据