Excel组合框-仅自动调整下拉列表大小

Excel组合框-仅自动调整下拉列表大小,excel,vba,Excel,Vba,用户表单中的组合框下拉菜单是否可以自动调整文本大小,而不更改组合框的实际大小 我已经找到了一些关于如何根据其中的值自动调整实际组合框的答案,但这会使大小超过我实际想要的() 下图显示了我试图实现的目标: 有人知道这是否可行吗?有些列看起来有点宽,但总的来说,我认为代码在配置下拉列表方面做得相当好 一些列中的示例数据似乎有点宽,但总的来说,我认为代码在配置下拉列表方面做得相当好 来自的示例数据是否从某个范围填充下拉列表?如果数据位于工作表垫的杯子上,则从SQL查询填充说明如何在此处填充:。是

用户表单中的组合框下拉菜单是否可以自动调整文本大小,而不更改组合框的实际大小

我已经找到了一些关于如何根据其中的值自动调整实际组合框的答案,但这会使大小超过我实际想要的()

下图显示了我试图实现的目标:


有人知道这是否可行吗?

有些列看起来有点宽,但总的来说,我认为代码在配置下拉列表方面做得相当好


一些列中的示例数据似乎有点宽,但总的来说,我认为代码在配置下拉列表方面做得相当好


来自

的示例数据是否从某个范围填充下拉列表?如果数据位于工作表垫的杯子上,则从SQL查询填充说明如何在此处填充:。是否从某个范围填充下拉列表?如果数据位于工作表垫的杯子上,则从SQL查询填充说明如何在此处填充:。
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