在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'属性。
答案 0 :(得分:0)
如果您的下拉数据正如您所说的那样从表中拉出,那么您需要做的就是自动调整该表的列并从中获取宽度(在末尾添加一点(+20)以允许下拉框)。请参阅下面的示例(如果信息来自的列是&#34; C&#34;)
Columns("C:C").EntireColumn.AutoFit
x = Columns("C:C").Width
mycombo.Width = x + 20