VBA:如何从ComboBox中选择项目

ksa*_*gar 7 ms-access vba combobox access-vba ms-access-2010

我有Access 2010表单,其中有一个ComboBox cmbSubTopic,列出了两列(SubTopicIDSubTopic).组合框绑定到包含的字段SubTopicID.SubTopicID组合框中的列是隐藏的,它只显示SubTopic.当用户SubTopic从下拉列表中选择a 时,相应的SubTopicID内容存储在表中.我为表单的on load事件编写了一些VBA代码,以便在表中查找SubTopicIDSubTopic在ComboBox中选择相应的.我目前的代码是这样的:

Set rsST = dbs.OpenRecordset(strSqlst)
For i = 0 To Me.cmbSubTopic.ListCount - 1
    If Me.cmbSubTopic.Column(0, i) = rsST.Fields("SubTopicID").Value Then
        Me.cmbSubTopic.SetFocus
        Me.cmbSubTopic.Selected(i) = True
        Exit For
    End If
Next i
Run Code Online (Sandbox Code Playgroud)

这给出了错误说:

您输入的文本不是列表中的项目

我也试过用这个:

Me.cmbSubTopic = Me.cmbSubTopic.Selected(i)
Run Code Online (Sandbox Code Playgroud)

这将选择ComboBox中的项目,但它也会将I的值写入ID我不想要的表的字段中.

Han*_*sUp 11

假设组合的第一列,SubTopicID也是组合的"绑定列"属性,它将用作列的.Value属性.这意味着您只需要指定一个值.Value即可选择匹配的组合行.

Me.cmbSubTopic.Value =  rsST.Fields("SubTopicID").Value
Run Code Online (Sandbox Code Playgroud)

这种方法很简单,但我不确定它是否适合您的情况.我们对你的rsST记录集一无所知---我假设SubTopicID记录集当前行中的字段是你想要在组合中选择的值.如果我误解了这一点,我们需要找出不同的东西.

如果组合绑定到表单记录源中的字段,则此建议也会更改存储的值.如果您不想这样,请"取消绑定"组合 - 换句话说,将其" 控制源"属性设置为空白.