5

Access には、3 つのテキスト ボックスがあるフォームがあります。両方の組み合わせでtbxCombinedNameというテキストボックスを更新しようとしています:

  • textbox tbxLastName (個人の姓)
  • textbox tbxFirstName (人の名前)

私の質問は: tbxLastNameにテキストを入力すると、CombinedName テキスト ボックスがすぐに更新され、その後テーブルContactsに保存されるように、どのテキスト ボックス プロパティを使用すればよいかということです。

Microsoftの Web サイトで、テキスト ボックスに入力するときのステップ プロセスは次のようになっていることがわかりました。

KeyDown → KeyPress → BeforeInsert → Change → 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

事前にご協力いただきありがとうございます。

4

2 に答える 2

8

これは、.text プロパティを参照する必要がある数少ないケースの 1 つです。

変更イベント:

lastName = tbxLName.Text

.text プロパティは、コントロールにフォーカスがあり、コントロールの可視コンテンツを参照している場合にのみ使用できます。

ただし、これはデータベースであり、原則として、計算フィールドを保存しないでください。完全な名前は、クエリから簡単に取得できます。

于 2012-08-16T11:35:28.723 に答える
1

ほんの2、3のメモ:

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
于 2012-08-16T13:56:59.320 に答える