我想知道如何在一个表单中定义一个组合框,用户可以从现有列表中选择一个选项,如果找不到所需的选项;添加新选项";可以访问哪个将组合框转换为用于编写新选项的文本框?
您可以在组合框旁边放一个按钮,用于当组合框"不在列表中"事件被点击时触发的"添加选项",然后该按钮将调用弹出窗体,或者在您的建议中,更改允许输入的重叠文本框的可见性。然而,我建议使用弹出式表单,因为这样你就可以验证输入的长度、内容等,然后一旦填写了表单或文本框,退出文本框或提交表单就会保存到你的表中进行下拉,刷新组合框源查询,并分配值。我在VBA中做这件事,还有很多弹出窗口。
对不起我英语不好:-(
您可以直接使用";关于"不在列表中";事件看看下面的例子https://learn.microsoft.com/en-us/office/vba/api/Access.ComboBox.NotInList
这是一个场景:一个叫做cb的组合框和一个叫做tb的文本框。tb的可见属性为false。组合框和文本框具有相同的数据源。当您键入一个不在组合框列表中的值时,该值将转到文本框;编辑完文本框后,它将再次隐藏。
Private Sub cb_NotInList(NewData As String, Response As Integer)
' Suppress error message and undo changes.
Response = acDataErrContinue
Me!cb.Undo
' Prompt user to verify they wish to add new value.
If MsgBox("Value is not in list. Add it?", vbOKCancel) = vbOK Then
Me!tb.Visible = True
Me!tb.Value = NewData
Me!tb.SetFocus
End If
End Sub
Private Sub tb_AfterUpdate()
' Hide again texbox
Me!tb.Visible = False
' Update combobox items
Me!cb.Requery
End Sub