我有 Access 2010 表单,其中有一个 ComboBox cmbSubTopic
其中列出了两列( SubTopicID
和 SubTopic
)。组合框绑定(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/