多选列表框中的最后一项仅部分可见

时间:2014-09-02 14:58:54

标签: excel excel-vba vba

我有一个包含多个列表框的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”就在那里,并且被选中,并且在列表框中。

Example

1 个答案:

答案 0 :(得分:0)

将ListBox的IntegralHeigth属性设置为false。