具有更高级别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
感谢您的帮助。
答案 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
请注意,只是将所选列表项重新分配给其当前值并不起作用,因为底层代码显然会检查该情况并将其视为无操作。