Excel列表框listindex不突出显示

时间:2013-05-07 18:12:29

标签: excel excel-vba listboxitems vba

具有更高级别excel功能的人可以帮助我使用以下代码吗?我在Worksheet_Activate事件中设置了它。我有代码将ActiveX列表框设置为默认值,如下所示。无论出于何种原因,列表框都不会将默认值显示为突出显示的项目。所有其他逻辑似乎工作正常,但它让我疯狂,下面的代码将不会突出显示我的第一个列表框中的愚蠢的第一项。我做错了什么?

With CTOverview.ListBox1
    .IntegralHeight = True
    .Height = 114.75
    .Width = 125.25
    .IntegralHeight = False
    .ListIndex = 0
    .Selected(0) = True
    .Value = "Entire Division"
End With

CTData.Range("Overview_RegionSelected").Value = CTOverview.ListBox1.Value

With CTOverview.ListBox2
    .IntegralHeight = True
    .Height = 114.75
    .Width = 150
    .IntegralHeight = False
    .ListIndex = -1
End With

感谢您的帮助。

5 个答案:

答案 0 :(得分:1)

设置。选择为False并立即将其设置为True对我有效:

With Me.Charts_LB
    .ColumnHeads = False
    .RowSource = rng.Address
    .Height = 480
    .Selected(Charts_ListIndex) = False
    .Selected(Charts_ListIndex) = True
End With

答案 1 :(得分:0)

我知道。我在过去看到过这种奇怪的行为,完全没有解释。有时候它有效,有时却没有。试试这个。这将有效。

With CTOverview.ListBox1
    If .ListCount > 1 Then .Selected(1) = True
    .IntegralHeight = True
    .Height = 114.75
    .Width = 125.25
    .IntegralHeight = False
    .ListIndex = 0
    .Selected(0) = True
    .Value = "Entire Division"
End With

<强>后续

这是一个比我之前给你的代码更好的代码。上述代码仅限于我们需要更多而不是1 Listcount。以下内容适用于1 Listcount

Dim rng As Range, aCell As Range

With CTOverview.ListBox1
    .IntegralHeight = True
    .Height = 114.75
    .Width = 125.25
    .IntegralHeight = False
    .ListIndex = 0
    .Selected(0) = True
    .Value = "Entire Division"

    Set rng = Range(.ListFillRange)
    For Each aCell In rng
        aCell.Formula = aCell.Formula
    Next
End With

答案 2 :(得分:0)

简化您的代码。使用.Selected属性或.ListIndex属性或.Value属性可以选择列表中的项目。

在第一个列表框(ListBox1)中,您已使用所有三个属性来使默认选择生效。可能您的代码中的值不一致,例如列表中的第一项不是“整个分区”。如果您的第一个项目仅为“整个部门”,则可以使用任何一个属性来实现所需的选择。

在第二个列表框(ListBox2)中,当您的代码具有.ListIndex = -1时,表示您要取消选择所有内容。因此,将所需的列表索引更改为0以选择第一个项目。

鉴于您希望默认选择列表框的第一个选项,请将以下内容作为基础。

With CTOverview.ListBox1
    .ListIndex = 0
End With

With CTOverview.ListBox2
    .ListIndex = 0
End With

让我知道你的想法。

答案 3 :(得分:0)

所以我遇到了同样的问题,我提到了Office文档并意识到所有内容都依赖于列表框应该关注的前提,使其value属性返回值。

我建议您只需在末尾添加一行以引起焦点。

With CTOverview.ListBox1
    .IntegralHeight = True
    .Height = 114.75
    .Width = 125.25
    .IntegralHeight = False
    .ListIndex = 0
    .Selected(0) = True
    .Value = "Entire Division"
    .SetFocus
End With

答案 4 :(得分:0)

我在UserForms中看到了类似ListBox控件的问题(不是工作表中嵌入的ActiveX控件),但由于我还没有找到任何其他帖子显示在前几个Google搜索页面上,我和# 39;我将我的解决方案附加到这个,因为搜索UserForm解决方案的人很可能会在这篇文章中出现,而且对于那些使用直接ActiveX ListBox控件的人来说也可能会有所帮助。

在UserForms(至少)设置中.ListIndex = n和.Selected(n)= True似乎没有任何帮助。我发现的唯一解决方法就是这样,其中&#34; n&#34;是要选择/突出显示的列表项:

Dim SaveVal As String
With MyUserForm.SomeListBox
    SaveVal = .List(n)
    .Value = ""
    .Value = SaveVal
    .SetFocus   'Not required, but allows up/down arrow keys to function normally.
End With

请注意,只是将所选列表项重新分配给其当前值并不起作用,因为底层代码显然会检查该情况并将其视为无操作。