ksa*_*gar 7 ms-access vba combobox access-vba ms-access-2010
我有Access 2010表单,其中有一个ComboBox cmbSubTopic
,列出了两列(SubTopicID
和SubTopic
).组合框绑定到包含的字段SubTopicID
.SubTopicID
组合框中的列是隐藏的,它只显示SubTopic
.当用户SubTopic
从下拉列表中选择a 时,相应的SubTopicID
内容存储在表中.我为表单的on load事件编写了一些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
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
记录集当前行中的字段是你想要在组合中选择的值.如果我误解了这一点,我们需要找出不同的东西.
如果组合绑定到表单记录源中的字段,则此建议也会更改存储的值.如果您不想这样,请"取消绑定"组合 - 换句话说,将其" 控制源"属性设置为空白.