如何突出显示 MS-Access 列表框行?
Posted
技术标签:
【中文标题】如何突出显示 MS-Access 列表框行?【英文标题】:How can I show a MS-Access listbox row highlighted? 【发布时间】:2010-05-25 10:46:08 【问题描述】:我正在使用 MS-Access 2007。我希望通过 VBA 突出显示多列列表框的第一行。
我试过Me.LstSample.Selected(0) = True
,但它不起作用。
代码:
Private Sub LstStation_AfterUpdate()
With Me.LstSample
If IsNull(Me.LstStation) Then
.RowSource = ""
Else
.RowSource = _
"SELECT * FROM Samples WHERE S='" & Me.LstStation.Value & "'"
End If
Call .Requery
If Not IsNull(Me.LstStation) Then
Me.LstSample.Selected(0) = True
End If
End With
End Sub
【问题讨论】:
它应该可以工作。你把线放在哪里了,什么活动?您可以单步执行以查看事件是否触发?请注意,不要使用表单打开事件,因为控件尚未初始化。 我把它放在另一个列表框的更新后。如果用户在此(第一个)列表框中选择了一行,则在 AfterUpdate 事件代码中我重置第二个列表框的“RowSource”属性,执行“重新查询”,然后执行我提到的代码。 编辑您的帖子以包含更新后事件代码。您所描述的内容应该可以正常工作,所以我猜您遗漏了某些内容,或者您的代码中有一个小错误。 我想它不是“不是空的”。您是否尝试过注释掉 If 行? 【参考方案1】:我完全剥离了代码并重置了控件的属性,现在它可以正常工作了!
我正在弄清楚它们之间的区别,并会告诉大家。
【讨论】:
我终于找到了。因为我将 ColumnHeads 属性设置为 True,所以第一行包含标题,所以为了突出显示第一行(数据)行,我必须使用 LstSample.Selected(1)=True 而不是 LstSample.Selected(0)=True跨度> 【参考方案2】:尝试改变
Me.LstSample.Selected(0) = True
到
Me.lstSample.SetFocus
Me.lstSample.ListIndex = 0
我不确定为什么原始代码不起作用,但我倾向于使用 ListIndex 属性而不是 Selected 属性。
【讨论】:
【参考方案3】:我总是设置列表框的值:
Me!lstMyListBox = Me!lstMyListBox.ItemData(0)
【讨论】:
以上是关于如何突出显示 MS-Access 列表框行?的主要内容,如果未能解决你的问题,请参考以下文章