vba - 从组合框中选择项目

标签 vba ms-access combobox

我有 Access 2010 表单,其中有一个 ComboBox cmbSubTopic其中列出了两列( SubTopicIDSubTopic )。组合框绑定(bind)到包含 SubTopicID 的字段。 . SubTopicID组合框中的列是隐藏的,它只显示 SubTopic .当用户选择 SubTopic从下拉相应的SubTopicID存储在表中。我为表单的加载事件编写了一些 VBA 代码来查找 SubTopicID。表中和对应的SubTopic在 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

这给出了错误消息:

The text you entered isn't an item in the list



我也试过用这个:
Me.cmbSubTopic = Me.cmbSubTopic.Selected(i)

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

最佳答案

假设组合的第一列 SubTopicID , 也是它的“绑定(bind)列”属性,该列的值用作组合的 .Value属性(property)。这意味着您只需为 .Value 赋值为了选择匹配的组合行。

Me.cmbSubTopic.Value =  rsST.Fields("SubTopicID").Value
这种方法很简单,但我不确定它是否适合您的情况。我们对您的 rsST 一无所知记录集 --- 我假设 SubTopicID记录集当前行中的字段是您要在组合中选择的值。如果我误解了这一点,我们需要找出不同的东西。
如果组合绑定(bind)到表单记录源中的字段,则此建议也会更改存储的值。如果您不希望这样,请“取消绑定(bind)”组合 --- 换句话说,将其 Control Source 属性设为空白。

关于vba - 从组合框中选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20103964/

相关文章:

excel - 如何将 excel 连接到微软的 QnA Maker (VBA)

ms-access - 从 vba 执行隐藏的 http 请求

vba - Excel VBA 调试 : Loop not searching through the whole range

javascript - ExtJS:如何从任何其他代理 Access Ajax 请求的值?

c# - 如何在数据库表中查找连接的组合框中所选项目的索引

vba - VBA 中不为空

java - 为什么 UCanAccess 需要密码而 Jackcess 不需要?

sql - MS Access 将级联到空约束设置为现有表

combobox - ExtJs 4 : Remote Combobox - Abort Previous Request

c# - 如何从C#中的组合框获取值(value)?