在Access中,我有一个表单,其中有三个文本框。 我正在尝试使用两者的组合更新名为 tbxCombinedName 的文本框:
我的问题是:我使用什么文本框属性,因此当我在 tbxLastName 中键入文本时,CombinedName文本框会立即更新 ,然后保存在表格中联系人
在Microsoft's website上,我发现在文本框中输入时的步骤处理如下:
KeyDown→KeyPress→BeforeInsert→更改→KeyUp
我尝试过使用OnChange和OnKeyDown属性,但无济于事。哪个属性与什么代码相结合,将允许按类型更新操作?
这是我之前写的,但没有用:
Private Sub tbxLName_change()
Dim lastName As String
Dim nameCode As String
lastName = tbxLName.Value
Debug.Print lastName
nameCode = tbxNameCode.Value
nameCode = lastName
Debug.Print nameCode
End Sub
提前感谢您的帮助。
答案 0 :(得分:8)
这是您应该引用.text属性的少数情况之一。
在Change事件中:
lastName = tbxLName.Text
.text属性仅在控件具有焦点时可用,并且它引用控件的可见内容。
但是,这是一个数据库,一般规则是您不能存储计算字段。可以从查询中轻松获取全名。
答案 1 :(得分:1)
只是几个笔记:
您可能希望使用KeyPress,因为它可以更改或取消用户推送的密钥。
在下面的示例中,只允许使用字母,小写字母为大写字母:
Private Sub tbxLName_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Const ASCII_LOWER_RANGE = 65
Const ASCII_UPPER_RANGE = 122
Const ASCII_LOWER_A = 97
Const ASCII_LOWER_Z = 122
Const UPPER_MODIFIER = -32
Const ASCII_CANCEL_CODE = 0
Select Case KeyAscii
Case ASCII_LOWER_RANGE To ASCII_UPPER_RANGE
If KeyAscii >= ASCII_LOWER_A And KeyAscii <= ASCII_LOWER_Z Then
KeyAscii = KeyAscii + UPPER_MODIFIER
End If
Case Else
KeyAscii = ASCII_CANCEL_CODE 'Cancel Key Press
End Select
End Sub