見出し画像

【ACCESS コントロール】テキストボックス

テキストボックスとは

Access のフォームやレポートで データを表示および編集するために使用する Access の標準コントロールです
さまざまな種類のデータをテキストボックスに表示することができ
そのデータを使用して計算を実行することもできます

マスタテーブルからフォームを作ると書式は引き継ぐことができます

社員マスタテーブルをレコードソースに設定し
各テキストボックスのコントロールソースにそのフィールドを設定することで 社員マスタリストが表示されます

社員マスタテーブルを作成するとき
あらかじめフィールドプロパティが設定してあれば

このテーブルを選択して 作成のフォームを選択することで

そのテキストボックスに設定されたフィールドの書式は
テーブル作成時 フィールドプロパティで設定した書式がそのまま引き継がれます

VBAで書式を変えるには

入社日(日付)を西暦から和暦に

さきほどの社員マスタを

の入社日を西暦表示から このように 和暦にかえます

Format プロパティを使います
Me.nyusha_date.Format = "gge/mm/dd"

日付/時刻型の主な書式指定文字
yyyy :西暦4けた
yy:西暦2けた
ggg:年号(平成、昭和など)
gg:年号漢字1文字(平、昭など)
g:年号アルファベット1文字(H、Sなど)
ee:和暦2けたe和暦
mm:月2けた
m:月1けたまたは2けた(1 ~ 12)
dd:日2けた
d:日1けたまたは2けた(1 ~ 31)

IMEモードや書式を設定する

テキストボックス【動画で説明】

IMEモード

日本語を入力するときに切り替える「IME入力モード」
日本語(ひらがなや漢字など)を入力するときはオン
半角英数字を入力するときはオフ
といったように入力するデータの種類によって
いちいち切り替えるのは面倒なものです
入力効率を高めるため ミスをなくすために
あらかじめ設定されると便利です

前述のようにテーブルのフィールドの設定を引き継ぎ
自動的に行われる場合が多いですが
今回は 非連結のテキストボックスにVBAでIMEモードや書式を変える方法をご紹介していきます

非連結のテキストボックスを配置し
コード、名前、カナ、生年月日、携帯番号、点数 といったデータを入力します

非連結のテキストボックスとは コントロールソースが設定されていないものといえます
この場合各テキストボックスのプロパティで設定できる項目値はデフォルトのままです

それぞれのテキストボックスにあとから IMEモードを設定する方法をご紹介します
IMEMode プロパティ

object.IMEMode
object に TextBox オブジェクトを指定してテキストボックスのIMEモードを設定します

  Me.txt_code.IMEMode = acImeModeOff
    Me.txt_name.IMEMode = acImeModeHiragana
    Me.txt_kana.IMEMode = acImeModeKatakana
    Me.txt_dob.IMEMode = acImeModeOff
    Me.txt_cell.IMEMode = acImeModeOff
    Me.txt_score.IMEMode = acImeModeOff

Me.txt_code.IMEMode = acImeModeOff
コード:IMEを無効にして英数字の入力を有効にする
Me.txt_name.IMEMode = acImeModeHiragana
名前:ひらがなモードでIMEを有効にする
Me.txt_kana.IMEMode = acImeModeKatakana
カナ:全角カタカナモードでIMEを有効にする
Me.txt_dob.IMEMode = acImeModeOff
Me.txt_cell.IMEMode = acImeModeOff
Me.txt_score.IMEMode = acImeModeOff

生年月日 携帯番号 点数:IMEを無効にして英数字の入力を有効にする

他に
acImeModeAlpha:半角英数モードでIMEを有効にする
acImeModeAlphaFull:全角英数モードでIMEを有効にする
acImeModeDisable:IMEを無効にする
acImeModeKatakanaHalf:半角カタカナモードでIMEを有効にする
acImeModeNoControl:IMEのモードを変更しない
acImeModeOn:IMEを有効にする

定型入力

InputMask プロパティ

object . InputMask
object に TextBox オブジェクトを指定し データの入力を簡単にしたり
テキストボックスコントロールにユーザーが入力できる値を制限できます

Me.txt_cell.InputMask = "(###)####-####"
携帯番号の入力がしやすいように書式を設定しています

書式指定文字

数値型、通貨型の主な書式指定文字
0:数値の桁を表す。対応する位置に値がない場合、ゼロ(0)が表示される
#:数値の桁を表す。対応する位置に値がない場合は何も表示されない
¥:円記号(¥)の次の文字をそのまま表示する。「¥¥」とすると、円記号を表示できる
"":ダブルクォーテーション("")で囲まれた文字をそのまま表示する

短いテキスト、長いテキストの主な書式指定文字
@: 文字を表す。文字列より「@」の数が多い場合、先頭に空白を付けて表示される
& :文字を表す。文字列より「&」の数が多い場合、文字列だけが左揃えで表示される
< :アルファベットを小文字にする
>:アルファベットを大文字にする

数値の書式

Format プロパティ

object.Format
object に指定した TextBox オブジェクトの数値 日時 テキストの表示および印刷形式をカスタマイズするときに使用します
Format プロパティは「;(セミコロン)」を使用して4つのセクションを指定することができます
1つ目:正の数
2つ目:負の数
3つ目:「0」の場合
4つ目:Null値の場合

Me.txt_score.Format = "#,##0;#,##0[Red];""ゼロ"";""データなし"""
点数のテキストボックスに 1000単位の区切り記号で負の場合は赤文字
0の場合は「ゼロ」と表示し Nullだと「データなし」と表示されます

編集の可否

名前に文字がはいっていないとき カナが入力できないようにします

フォームの読み込み時

   Me.txt_name = ""
    Me.txt_kana = ""
    Me.txt_kana.BackColor = RGB(200, 200, 200)
    Me.txt_kana.Locked = True

名前とカナを空欄にして
カナの背景をグレーにします
Me.txt_kana.Locked = True
テキストボックスを編集不可にします

名前テキストボックスの更新後処理

   If Len(Me.txt_name) > 0 Then
        Me.txt_kana.BackColor = RGB(250, 250, 250)
        Me.txt_kana.Locked = False
    Else
    Me.txt_kana.BackColor = RGB(200, 200, 200)
        Me.txt_kana.Locked = True
    End If

名前テキストボックスの長さを判断して入力されているかどうかを判断します
入っていたら カナテキストボックスの背景を白にして編集可とします
入っていなければ グレーにして編集を不可とします

Locked プロパティ

object.Locked
object にコントロールを指定して コントロールの編集の可否を指定することができます True を指定すると編集不可 False を指定すると編集可となります

データを表示

コードに番号をいれると
社員マスタデータからそのコードの社員の名前 カナなどを表示します  

     Me.RecordSource = "M_staff"
        DoCmd.ApplyFilter , "staff_code =  " & Me.txt_code
        Me.txt_name.ControlSource = "staff_name"
        Me.txt_kana.ControlSource = "staff_kana"
        Me.txt_dob.ControlSource = "birthday"
        Me.txt_cell.ControlSource = "cell_phone"

Me.RecordSource = "M_staff"
フォームのレコードソースを「M_staff」にします
DoCmd.ApplyFilter , "staff_code = " & Me.txt_code
M_staff の staff_code が テキストボックスの値と同じものを表示しますMe.txt_name.ControlSource = "staff_name"
Me.txt_kana.ControlSource = "staff_kana"
Me.txt_dob.ControlSource = "birthday"
Me.txt_cell.ControlSource = "cell_phone"

非連結フォームの各テキストボックスにレコードソースのフィールドを関連づけます

まとめ

テキストボックスはテーブルの修正や新規追加登録などの際
テーブルのフィールドの内容を表示します
その際 入力効率やミスを防ぐための
様々な設定を施すことが必要となります
Accessを使う中でフォームやレポートで最も使われるコントロールといえます
今回はテキストボックスの入力モードや書式の設定などを
VBAを使った方法をご紹介しました


いいなと思ったら応援しよう!