.Text 属性仅在组合具有焦点时可用。在任何其他时间,您都必须使用其.Value 属性。
这适用于我的组合框,可以满足您的要求。
Private Sub cboAccountID_AfterUpdate()
Me.cboAccountID.DefaultValue = Me.cboAccountID.Value
MsgBox "DefaultValue: " & Me.cboAccountID.DefaultValue
End Sub
在您关闭表单之前,该方法将保持您希望的 DefaultValue。但是下次打开表单时,您想再次使用上一个值。
在这种情况下,您可以将值保存在Form_Close,并在下次将其恢复到Form_Load。
我使用一个表来存储用户选项值。我有这个查询,qryUpdateOption,来更新保存的值。
PARAMETERS pKey Text ( 255 ), pValue Text ( 255 );
UPDATE tblOptions AS o
SET o.option_value = [pValue]
WHERE o.option_key=[pKey];
所以在Form_Close,我可以保存cboAccountID.DefaultValue的当前值。
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = currentd
Set qdf = db.QueryDefs("qryUpdateOption")
qdf.Parameters("pValue").value = Me.cboAccountID.DefaultValue
qdf.Parameters("pKey").value = "cboAccountID.DefaultValue"
qdf.Execute dbFailOnError
在Form_Load,我可以检索该值并将其分配给cboAccountID.DefaultValue。
Me.cboAccountID.DefaultValue = DLookup("option_value", _
"tblOptions", "option_key='cboAccountID.DefaultValue'")
请注意,此建议假定 tblOptions 中存在具有 "cboAccountID.DefaultValue" 键的行。您可能需要完善此概述的建议。
而且我认为它对您有用,因为您的每个用户都有自己的 db 文件,其中包含表单和数据……您无需担心一个用户会覆盖另一个用户保存的首选项。