Excel 2010 VBA:DropDown组合的自动宽度

时间:2014-06-12 09:25:50

标签: excel vba drop-down-menu combobox excel-2010

在Excel 2010中,我有一个带有下拉组合的工作表。组合不是Active X,它是一个表单控件。组合从表中获取其值,并且表由vba宏重新填充,因此值的长度可以更改。

更新表格中的值后,我想将组合的宽度重新调整为最长值的宽度。我搜索了很多,但我找不到怎么做。我找到了一些例子,但我不知道如何将它们翻译成我的组合。例如,以下代码(取自http://www.ozgrid.com/forum/showthread.php?t=55098):

Dim iWidth As Double 
ComboBox1.AutoSize = True 
iWidth = 0 

For i = 0 To ComboBox1.ListCount - 1 
    ComboBox1.ListIndex = i 
    If iWidth < ComboBox1.Width Then 
        iWidth = ComboBox1.Width 
    End If 
Next 

ComboBox1.Width = iWidth 
ComboBOx1.AutoSize = False 
ComboBox1.ListCount = 0 

将翻译为:

Dim iWidth As Double 
Dim mycombo as DropDown
Set mycombo = ActiveSheet.DropDowns("combo")
mycombo.AutoSize = True     ' <<<< no 'AutoSize' property in DropDown class
iWidth = 0 

For i = 0 To mycombo.ListCount - 1 
    mycombo.ListIndex = i 
    If iWidth < mycombo.Width Then 
        iWidth = mycombo.Width 
    End If 
Next 

mycombo.Width = iWidth 
mycombo.AutoSize = False    ' <<<< no 'AutoSize' property in DropDown class
mycombo.ListCount = 0 

但是DropDown类中没有'AutoSize'属性。

1 个答案:

答案 0 :(得分:0)

如果您的下拉数据正如您所说的那样从表中拉出,那么您需要做的就是自动调整该表的列并从中获取宽度(在末尾添加一点(+20)以允许下拉框)。请参阅下面的示例(如果信息来自的列是&#34; C&#34;)

Columns("C:C").EntireColumn.AutoFit
x = Columns("C:C").Width
mycombo.Width = x + 20