Accessフォームの日本語入力を制御する方法とIME設定の注意点

概要

この記事の結論
Accessフォームの日本語入力は、テキストボックスのプロパティにあるIME入力モードで切り替えます。氏名はひらがな、フリガナは全角カタカナ、コード欄は用途に応じてオフや使用不可に設定できます。ただしIMEは入力時の変換モードを整える機能です。貼り付けや別経路からの登録まで保証するものではないため、保存する値の条件は入力規則や保存前チェックで別に確認します。

この記事でわかること

  • 入力欄ごとにIMEを設定する
  • オフと使用不可を使い分ける
  • 入力支援と保存値チェックを分ける
  • 貼り付けや別端末でも確認する

この記事の主な内容

  1. 日本語入力の切り替えは入力欄ごとに設定する
  2. IME入力モードの設定手順
  3. 氏名とフリガナとコードの設定例
  4. 貼り付けも考慮した入力チェック
  5. IME設定が効かないときの確認
  6. 既存データと連携処理を扱うときの注意
  7. 入力テストと運用のまとめ
  8. よくある質問

想定読了時間:約12分~15分


日本語入力の切り替えは入力欄ごとに設定する

Accessフォームでは、テキストボックスの「IME入力モード」を設定して、入力欄へカーソルが入ったときの日本語入力状態を指定できます。IMEとは、キーボードで入力した文字を日本語へ変換するための入力機能です。氏名と商品コードで別のモードにすると、切り替え操作を減らせます。
[参考1]

ただし、IMEの設定は保存する文字の種類を保証するものではありません。入力しやすい状態へ切り替える機能と、不正な値を登録させない仕組みは別に設計します。貼り付け、取込、他のフォームなど、キーボード以外の入力経路も考える必要があります。

入力支援とデータ検証を分ける

仕組み役割例
IME入力モード入力を始めるときの変換状態を整える氏名欄をひらがなで開始
定型入力入力位置や形式を誘導する決まった桁のコード入力
入力規則値が条件を満たすか確認する数値が0以上か確認
保存前の処理複数条件や独自の条件を確認するASCII英数字以外を拒否
テーブル・サーバー側の制約データの整合性を保つ必須項目・一意キー

フォームだけでチェックすると、別の入力画面や外部取込から登録された値は同じ検証を通らない場合があります。全経路で守りたい条件はテーブルや保存処理にも設け、利用者へ説明するメッセージはフォーム側で整えると役割が明確になります。
[参考2]

入力モードを整えるIMEと保存値を確認する入力規則の役割分担

IME入力モードの設定手順

フォームをデザインビューで開き、文字を入力するテキストボックスを選択して設定します。横にある項目名のラベルやフォーム全体を選んでいると、目的のプロパティは表示されません。プロパティシート上部で選択対象を確認してください。

  1. 対象フォームを右クリックし、デザインビューで開きます。
  2. 氏名などを入力するテキストボックスの枠をクリックします。
  3. F4キーなどでプロパティシートを開きます。
  4. 「その他」または「すべて」タブから「IME入力モード」を探します。
  5. 目的のモードを選択し、フォームを保存します。
  6. フォームビューへ切り替え、別の欄から対象欄へ移動して確認します。

プロパティ名やタブの配置はAccessの版や表示言語で異なる場合があります。設定後に同じ欄へカーソルを置いたまま判断せず、一度別の入力欄へ移動してから戻ってください。IME入力モードは、基本的にフォーカスが移る場面の設定として確認します。
[参考1]

VBAで設定する場合の例

固定設定はプロパティシートで行う方が見つけやすくなります。業務条件によって変更する必要があるときだけVBAを使い、どのイベントで設定するかを決めます。以下はフォームを開いたときに、氏名をひらがな、商品コードをIME使用不可にする例です。

Private Sub Form_Load()
    Me!txt氏名.IMEMode = 4
    Me!txt商品コード.IMEMode = 3
End Sub

txt氏名とtxt商品コードはテキストボックスの名前です。フォームに実在する名前へ合わせ、既にForm_Loadの処理がある場合はその中へ組み込みます。別のEnterやGotFocusイベントでモードを上書きしていると、プロパティシートと異なる動作になるため、設定元を増やしすぎないようにします。

フォームのデザインビューから対象入力欄のIME入力モードを設定する手順

氏名とフリガナとコードの設定例

入力欄の目的に合うモードを選びます。例えば氏名は日本語入力を始めやすくし、フリガナは利用先が求める全角・半角をそろえます。コードは日本語を入力しない方針でも、外国語や記号を許すかまで先に定義してください。

設定値意味と使いどころ
コントロールなし0直前の入力状態を引き継ぐ
オン1日本語変換をオンにする
オフ2日本語変換をオフにして開始する
使用不可3対象欄でIMEの切り替えを禁止する
ひらがな4全角ひらがなで入力を始める
全角カタカナ5フリガナなどの入力を支援する
半角カタカナ6連携先が要求する場合などに利用
全角英数字7全角の英数字で入力を始める
半角英数字8半角の英数字で入力を始める

上記は日本語入力に関連する主な設定です。実際の変換挙動は利用するIMEや環境と組み合わせて確認します。半角カタカナは見た目の好みで採用せず、連携先の仕様で必要か、濁点を含む文字数の扱いに問題がないかを確認してください。
[参考1]

氏名欄を強く制限しすぎない

氏名には日本語だけでなく、アルファベット、空白、記号が必要になる場合があります。ひらがなモードにしておくことと、漢字以外を保存できなくすることは別です。実在する名前を入力できなくしないよう、業務上必要な文字の範囲を定めます

フリガナも、姓と名の間の空白、長音記号、中点、外国語名をどう扱うかで条件が変わります。入力例を「ヤマダ タロウ」のように示し、保存時に何を許可するかを説明すると、利用者が修正しやすくなります。自動変換する場合は変換後の値も確認できるようにしましょう。

氏名、フリガナ、コードで入力モードを使い分ける例

オフと使用不可は違う

「オフ」はIMEをオフにして開始しますが、その後の切り替えは可能です。「使用不可」はそのコントロールでIMEの状態を変更できなくする設定です。日本語変換を使わせない目的なら使用不可を候補にできますが、保存値の文字種チェックは別に必要です。
[参考1]

例えば商品コードを使用不可にしても、利用者が別の場所でコピーした全角文字を貼り付けるケースまで、IMEの設定だけで防げると考えてはいけません。許可した文字だけを保存する要件なら、貼り付け後の値を含めた検証を実装します。

IMEをオフにして開始する設定と切り替えを禁止する設定の違い

貼り付けも考慮した入力チェック

「半角英数字だけのコード」を確実に扱いたい場合は、文字の条件、桁数、未入力の扱いを定義します。本記事では、ASCIIのA~Z、a~z、0~9だけ、1~20文字、未入力不可という説明用のルールを使います。ハイフンや空白も許す業務なら条件を変更してください。

保存する型を先に決める

「00125」のように先頭のゼロを残す識別コードは、数値計算に使わない限り短いテキスト型が基本です。数値型では値として125になり、入力した表記をそのまま保持する目的に合いません。IMEを変更しても、テーブルのデータ型による違いは解消しません。

テーブル側では商品コードを短いテキスト型、フィールドサイズ20、値要求を「はい」、空文字列の許可を「いいえ」にするなど、基礎条件を設定します。フォームのメッセージだけでなく、データ側にも条件を持たせる理由は、入力経路が増えても整合性を保つためです。
[参考2]
[参考4]

ASCII英数字を確認するVBA例

以下は対象フォームのモジュールに記述する例です。キー入力の途中ではなく、入力欄の更新前処理で値全体を確認するため、貼り付け後の値も対象になります。ただし、このフォーム以外の取込処理を自動で検証するコードではありません。

Private Function IsAsciiCode(ByVal s As String) As Boolean
    Dim i As Long
    Dim c As Long
    If Len(s) < 1 Or Len(s) > 20 Then Exit Function
    For i = 1 To Len(s)
        c = AscW(Mid$(s, i, 1))
        If Not ((c >= 48 And c <= 57) Or _
                (c >= 65 And c <= 90) Or _
                (c >= 97 And c <= 122)) Then
            Exit Function
        End If
    Next i
    IsAsciiCode = True
End Function

Private Sub txt商品コード_BeforeUpdate(Cancel As Integer)
    If Not IsAsciiCode(Nz(Me!txt商品コード.Value, “”)) Then
        Cancel = True
        MsgBox “商品コードは半角英数字1~20文字で入力してください。”, _
               vbExclamation
    End If
End Sub

関数のAscWは1文字の文字コードを取得します。許可する範囲を数値で判定することで、全角のAや1、空白、タブ、改行をこの例では受け付けません。新規レコードで一度も入力欄を編集しない場合はコントロールの更新前処理だけに頼れないため、必須条件はテーブル側にも設けます。

入力規則にLikeを使う方法もありますが、ANSI-89とANSI-92ではワイルドカードなどの扱いが異なります。既存式をそのままコピーせず、データベースの設定と検証対象を確認してください。本記事のコードは許可文字を明示する一例で、メールアドレスや氏名へそのまま流用するものではありません。

手入力、貼り付け、取込のどの経路でも値の確認が必要なこと

日本語入力と入力チェックの改善でお困りの方へ

検証用コピーでの確認が難しい場合や、複数の画面・外部連携へ影響する場合は、Accessの教科書のお問い合わせ窓口へご相談ください。現在の構成、困っている操作、変更したい内容を整理すると、確認すべき範囲を伝えやすくなります。


IME設定が効かないときの確認

設定どおりにならない場合は、まず設定先の間違いと、イベントによる上書きを調べます。続いてWindows・Access・IMEの種類とバージョンを記録し、同じ操作で再現するかを確認します。最初からPC全体のIME設定を変えると、他の業務アプリへ影響することがあります。

症状確認すること次の操作
IME入力モードが見つからないラベルやフォーム本体を選んでいないか入力するテキストボックスを選び直す
設定した直後は変わらない同じ欄にフォーカスが残っていないか別の欄へ移動して戻る
毎回違う状態になるコントロールなし・イベント処理モードと設定箇所を確認
一部の欄だけ変わらないロック・使用可能・実際の入力対象対象コントロール名を確認
特定PCだけ効かないWindows・Access・IME・リモート環境環境差と再現手順を比較
貼り付けた文字が残るIMEと入力チェックの役割の違い保存前の値を検証

日本語変換中と確定後を分けて調べる

日本語入力では、変換中の未確定文字と確定した値の扱いが異なります。キー入力イベントで強い変換や削除を行うと、変換操作を妨げる可能性があります。文字列の検査は、業務要件に応じてコントロールの更新前やレコード保存前へ置くことを検討します。

リモートデスクトップを利用する場合は、手元のPCと接続先の環境を分けて記録します。「同じAccessファイルだから同じIME動作」とは限りません。新しい空のフォームに単一のテキストボックスを置いて比較すると、アプリ側の処理と環境の問題を切り分けやすくなります。

対象コントロール、イベント、IME環境、再現条件を確認する順序

既存データと連携処理を扱うときの注意

IME入力モードを変えても、既に保存されている全角・半角文字が一括変換されるわけではありません。既存データを整える場合は、対象データを抽出し、変換前後の値と重複の発生を確認する別作業として進めます。

例えば「A001」と「A001」を同一にそろえると、別レコードのコードが重複することがあります。変換だけ成功しても、主キーや一意制約で登録できなくなったり、参照先が曖昧になったりする可能性があります。変更対応表とバックアップを用意し、元の値を追跡できるようにします。

また、CSV取込ではフォームのIME設定は入力品質の保証になりません。取込用テーブルで文字種、桁数、空白、未入力を確認し、不適合行を担当者へ返す運用にします。氏名などを無条件に変換するのではなく、対象項目ごとに正規化の必要性と許可範囲を決めてください。


入力テストと運用のまとめ

設定後は、手入力でうまくいくことだけでなく、貼り付けや未入力、別端末を含めて確認します。期待する結果を先に決めておくと、IMEの支援機能が効いているかと、保存値の検証が働いているかを分けて判定できます

テスト確認する結果
Tabで氏名からコードへ移動指定したIMEモードへ切り替わる
全角英数字をコード欄へ貼り付け業務条件に応じて保存前に検出される
00125を入力して保存テキスト型のコードとして先頭ゼロが残る
空欄のまま新規レコードを保存必須の項目は保存を拒否する
20文字と21文字を入力定義した桁数条件と一致する
日本語・英語の氏名を入力必要な表記を正当に保存できる
CSVから同じ値を取り込む取込側でも定義した条件を確認する

日本語入力の改善は、IMEの切り替え、利用者に分かる説明、保存値の検証を組み合わせて行います。入力しやすさと業務データの正確性を両立させ、設定を変えた後は実際の利用環境で確認しましょう。

フォーカス移動、手入力、貼り付け、保存後再表示を確認する項目

よくある質問

実務では、文字を入力する各テキストボックスのIME入力モードを設定します。氏名と商品コードでは望ましい入力状態が違うため、一律に日本語入力へそろえるより項目別に決める方が使いやすくなります。設定時はラベルではなく入力欄を選び、プロパティシート上部の対象名を確認してください。複数の欄へ同じ設定を反映した場合も、コードやメールアドレスなど例外になる項目が含まれていないかを最後に確認しましょう。

入力開始時は英数字にしつつ、必要なら日本語へ切り替えられるようにしたい場合はオフを検討します。日本語変換を使わせない入力欄では使用不可が候補になります。ただし、どちらを選んでも保存できる文字の範囲をIMEだけで保証することはできません。貼り付けた文字も含めて半角英数字だけに制限したい場合は、入力規則や保存前チェックを追加します。氏名など多様な表記が必要な項目を強く制限しすぎないことも大切です。

その保証にはなりません。IME入力モードは入力を始める際の変換状態を整える機能で、貼り付けや別画面からの登録、外部ファイルの取込まで同じ条件で検証する仕組みではないためです。許可文字と桁数を決め、保存前に値全体を確認してください。フォームだけの検証では別経路の登録を防げない場合もあります。全経路で守る条件はテーブルや共通の保存処理へ置き、実際の入力方法ごとにテストします。

変換されません。IME入力モードは今後の入力を支援する設定で、保存済みデータの一括修正ではありません。過去の全角コードを半角へそろえる場合などは、対象を抽出し、変換結果を確認してから更新します。表記をそろえた結果、別のレコードと同じコードになってしまう可能性もあります。バックアップと変更前後の対応表を用意し、重複キーや関連テーブルへの影響を確認することが、単純な置換より重要になります。

必ず半角にする必要はありません。連携先の仕様、帳票表示、文字数の数え方などに合わせて全角か半角を決めます。特に半角カナの濁点や半濁点は、文字数や比較条件で想定と違う扱いになることがあるため確認が必要です。姓と名の間の空白、長音、中点を許すかも決めてください。入力モードだけで表記は完全に統一できないので、入力例を示し、必要な検証を追加して、利用者が修正理由を理解できるようにします。

まず保存先のデータ型を確認してください。商品コードを数値型へ保存すると、00125は数値の125として扱われます。識別子として先頭ゼロを保持したい場合は、通常は短いテキスト型を使います。IMEを半角英数字へ変更しても、数値型の性質は変わりません。既存の型を変更する場合は、関連テーブル、クエリ、外部連携も確認します。既に失われたゼロの数を復元するときは、元データや正式なコード桁数を根拠にしてください。

日本語入力と入力チェックの改善でお困りの方へ

検証用コピーでの確認が難しい場合や、複数の画面・外部連携へ影響する場合は、Accessの教科書のお問い合わせ窓口へご相談ください。現在の構成、困っている操作、変更したい内容を整理すると、確認すべき範囲を伝えやすくなります。

関連記事

Accessのプロパティシート

フォームのコントロール

データ入力用フォームの作成

コントロールソースの使い方


参考情報

参考1 Microsoft Learn|TextBox.IMEMode
https://learn.microsoft.com/en-us/office/vba/api/access.textbox.imemode

参考2 Microsoft Learn|ValidationRule
https://learn.microsoft.com/en-us/office/vba/api/access.textbox.validationrule

参考3 Microsoft Support|レコードの追加と編集
https://support.microsoft.com/ja-jp/access/ways-to-add-edit-and-delete-records

参考4 Microsoft Support|テーブルとフィールドの作成
https://support.microsoft.com/ja-jp/access/create-a-table-and-add-fields

TOP