MS Access:ListBox.Selected不起作用

时间:2015-03-27 03:25:25

标签: ms-access listbox access-vba ms-office

我正在MS Access 2013中开发数据库。

我有一个带有列表框的表单,以及两个按钮,btnNext和btnPrev - 这些按钮用于更改列表框中当前选定的项目。用户还可以单击列表框以更改所选项目;

Picture of MS Access form

我想停用以前的'当用户选择列表中的第一个项目时按钮,并禁用“下一个”按钮。用户选择列表中的最后一项时的按钮。为此,我有以下子;

Private Sub UpdateNavigationButtons()

    If lstBox.Selected(0) Then
        btnPrev.Enabled = False
    Else
        btnPrev.Enabled = True
    End If

    If lstBox.Selected(lstBox.ListCount - 1) Then
        btnNext.Enabled = False
    Else
        btnNext.Enabled = True
    End If

End Sub

当我从任意按钮的Click事件处理程序或直接窗口调用它时,此Sub工作正常,但是当我从ListBox AfterUpdate调用它时或Click事件处理程序,.Selected数组始终用零填充。我无法在MSDN文档中找到有关此限制的任何文档。

当用户更改当前列表框选择时,有人可以建议我禁用这些按钮吗?

2 个答案:

答案 0 :(得分:1)

为了简单地启用/禁用记录选择器按钮,我尝试了以下代码,它对我有用。当列表框同时具有值​​列表和表/查询作为rowsource时,它也有效。您只需为处理程序调用此代码即可进行设置。希望有所帮助!

Private Sub UpdateListboxRecordSelectorButtons()

    Dim strMinValue As String
    Dim strMaxValue As String

    strMinValue = Me.lstResults.ItemData(0)
    strMaxValue = Me.lstResults.ItemData(Me.lstResults.ListCount - 1)

    Select Case Me.lstResults.Value
        Case strMinValue
            Me.cmdPrevious.Enabled = False
            Me.cmdNext.Enabled = True
        Case strMaxValue
            Me.cmdNext.Enabled = False
            Me.cmdPrevious.Enabled = True
        Case Else
            Me.cmdNext.Enabled = True
            Me.cmdPrevious.Enabled = True
    End Select

End Sub

答案 1 :(得分:0)

ListBox.Selected与Listbox.ItemsSelected之间存在明显差异。

Listbox.Selected:https://msdn.microsoft.com/en-us/library/office/ff835338.aspx

ListBox.ItemsSelected:https://msdn.microsoft.com/en-us/library/office/ff823015.aspx

你是否使用了错误的功能?不确定是不是这样。