2010-05-25 111 views
1

如何显示突出显示的MS-Access列表框行?我正在使用MS-Access 2007.我希望多列列表框的第一行通过VBA显示为突出显示。 我试过Me.LstSample.Selected(0) = True,但它不起作用。如何显示突出显示的MS-Access列表框行?

代码:

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 
+0

它应该工作。你在哪里放行,什么事件?你可以一步一步看看事件是否发生?请注意,不要使用表单打开事件,因为控件不会被初始化。 – Fionnuala 2010-05-25 11:59:51

+0

我把它放在另一个列表框的AfterUpdate中。如果用户在这个(第一个)列表框中选择一行,那么在AfterUpdate事件代码中,我重置第二个列表框的'RowSource'属性,执行'Requery'然后是我提到的代码。 – waanders 2010-05-25 12:46:52

+0

编辑您的帖子以包含AfterUpdate事件代码。你所描述的应该工作得很好,所以我猜想你有什么东西可以抛弃,或者你的代码有一个小错误。 – KevenDenen 2010-05-25 13:36:17

回答

1

我完全剥离了代码并重置了控件的属性,现在它工作正常!

我在搞清楚这些差异是什么,并且会让大家都知道。

+0

我终于找到它了。因为我将ColumnHeads propery设置为True,所以第一行包含标题,所以要突出显示我要使用的第一个(数据)行LstSample.Selected(1)= True,而不是LstSample.Selected(0)= True – waanders 2010-05-27 13:44:28

0

尝试和改变

Me.LstSample.Selected(0) = True 

Me.lstSample.SetFocus 
Me.lstSample.ListIndex = 0 

我不知道为什么原来的代码不工作,但我倾向于使用ListIndex属性而不是Selected属性。

0

我总是设置列表框的值:

Me!lstMyListBox = Me!lstMyListBox.ItemData(0)