HOME > 即効テクニック > AccessVBA > フォーム・レポート > テキストボックスを使用する

即効テクニック

フォーム・レポート

テキストボックスを使用する

(Access 2000/2002/2003)
● 概要 ●
 テキストボックスは、ユーザーの入力を受け付けるために使用します。

テキストボックスに入力された値は、Textプロパティ、Valueプロパティで取得できます。
また、プロパティを明示しなくても、テキストボックスに入力された値を取得できます。


● サンプル ●
Private Sub cmd設定取得_Click()
    Dim myStr As String
    'フォーカスを移動
    テキスト1.SetFocus
    '値を設定
    テキスト1 = "テスト" 
    'Valueプロパティで値を取得
    myStr = "テキスト1.Value: " & テキスト1.Value & vbCr
    'Textプロパティで値を取得
    myStr = myStr & "テキスト1.Text: " & テキスト1.Text & vbCr
    'プロパティを明示せずに値を取得
    myStr = myStr & "テキスト1: " & テキスト1
    MsgBox myStr
End Sub


● 操作例1 ●
上記のコード中で、テキストボックスにフォーカスを与えているのは、Textプロパティはフォーカスがないと取得や設定ができないからです。
テキストボックスにフォーカスがある間は、Textプロパティには現在のテキストボックスの入力値が設定され、Valueプロパティには保存されているテキストボックスのデータが設定されています。
次のコードは、テキストボックスのChangeイベントプロシージャです。Changeイベントは、テキストボックスの内容が変化するときに発生します。
テキストボックスにデータを入力すると、Textプロパティは変化しますが、Valueプロパティには変化がありません。

● サンプル1 ●
Private Sub テキスト1_Change()
    Dim myStr As String
    'Valueプロパティで値を取得
    myStr = "テキスト1.Value: " & テキスト1.Value & vbCr
    'Textプロパティで値を取得
    myStr = myStr & "テキスト1.Text: " & テキスト1.Text & vbCr
    'プロパティを明示せずに値を取得
    myStr = myStr & "テキスト1: " & テキスト1
    MsgBox myStr
End Sub


● 操作例2 ●
テキストボックスに入力されたデータは、BeforeUpdateイベントでチェックできます。
チェックの結果、イベントプロシージャの引数をTrueに設定することによって、更新を取り消すことが可能です。
次のコードは、テキストボックスに数値以外が入力された場合、更新を取り消すものです。

● サンプル2 ●
Private Sub テキスト2_BeforeUpdate(Cancel As Integer)
    If IsNumeric(テキスト2.Text) = False Then
        MsgBox "数値を入力してください"
        Cancel = True
    End If
End Sub