我有一个包含多个列表框的Excel工作表。所有这些都是多选的。因为excel总是弄乱列表框的维度,我在打开工作簿时有一段代码来修复它们:
Private Sub Workbook_Open()
Dim Ctrl As OLEObject
For Each Ctrl In Sheets("SomeSheet").OLEObjects
If Ctrl.progID = "Forms.ListBox.1" Then
With Ctrl
.Width = 95.4
.Height = 70.2
End With
End If
Next Ctrl
End Sub
然而,过了一会儿,我注意到最后一个条目最多部分可见。在互联网上搜索为我提供了一个解决方案:link。
不幸的是,该解决方案对我不起作用。我将上面的代码改编为:
Private Sub Workbook_Open()
Dim Ctrl As OLEObject
Application.ScreenUpdating = False
For Each Ctrl In Sheets("SomeSheet").OLEObjects
If Ctrl.progID = "Forms.ListBox.1" Then
With Ctrl
.Object.IntegralHeight = False
.Width = 95.4
.Height = 70.2
.Object.IntegralHeight = True
.Object.MultiSelect = fmMultiSelectSingle
.Object.MultiSelect = fmMultiSelectExtended
End With
End If
Next Ctrl
End Sub
结果是,只要执行.height后面的三个语句,我设置的宽度和高度再次被excel搞砸了。每个语句都会导致列表框在两个维度上进一步缩小。更糟糕的是,他们也离开了他们的位置。
我正在寻找解决此问题的任何线索,以便拥有所需维度的列表框,所有条目都可见。
编辑20140905 根据要求,添加了屏幕截图。即使滚动条建议我可以进一步向下滚动,这是不可能的。正如您可以通过蓝色看到的那样,“Orange”就在那里,并且被选中,并且在列表框中。
答案 0 :(得分:0)
将ListBox的IntegralHeigth属性设置为false。