Microsoft Access Club >Access一日一見 >このページ >次頁 <前項  サイト内検索


テキストボックス入力を半角数字に限定する : 一日一見



入力フォームに数値型のテキストボックスを配置し、ユーザー入力の段階で半角の数字に限定したい場合があります。一般的に、ユーザー入力の事前チェックは更新前処理イベントを用いる方法と入力規則プロパティを用いる方法とがありますが、今回、入力規則プロパティを用いて半角 の数字に限定する方法をご紹介します。

全角文字から半角文字への変換と半角数字のチェック方法

入力された文字が半角であるか否かはStrComp関数、全角文字から半角文字への変換はStrConv関数を用いて行います。

  1. 全角数字を半角数字に変換する場合は、StrConv関数を用います。
    例、StrConv([フィールド名],vbnarrow)
    vbNarrow定数(値:8)は、文字列内の全角数字 (2 バイト) を半角数字 (1 バイト) に変換します。
  2. 全て半角数字に変換可能であるかチェックするには、StrComp関数を用います。
    例、StrComp([フィールド名],StrConv([フィールド名]),vbBinaryCompare))
    vbBinaryCompare定数(値:0)は、文字列比較の並べ替え順序は、バイナリ文字コードのコード順によって行います。

入力規則プロパティの設定

  1. フォームをデザインビューモードで開きます。
  2. テキストボックスのプロパティダイアログを表示します。
  3. 入力規則プロパティ欄に以下のように記述します。
    StrComp([フィールド名],StrConv([フィールド名],8),0)=0
  4. 全ての入力文字が半角に変換されている場合は0が返されます。
  5. 続いて、AND 演算子を用いて以下のように記述します。
     And [フィールド名] Not Like "*[!0-9]*"

  1. 数字(0-9)以外が入力された場合、Accessのシステムエラーメッセージが返されます。

エラーメッセージの設定時の留意点

一般的に、入力規則プロパティに反する場合に表示させるメッセージ は、エラーメッセージ欄に記述しますが、今回のように数値型フィールドに数値以外を入力した場合はAccessのシステムエラー(下図)が返されます。

独自のエラーメッセージの作成

これを独自のエラーメッセージに変更する方法は、以下の手順で行います。この場合は、エラーメッセージ欄は空白で問題ありません。

  1. フォームのエラー時イベントに以下のプロシージャを記述します。
    このプロシージャで発生したエラー番号を調べます。
Private Sub Form_Error(DataErr As Integer, Response As Integer)

    MsgBox "エラー番号 : " & DataErr

End Sub
  1. 下図のようにエラー番号が表示されます。

  1. このエラー番号を元にフォームのエラー時イベントプロシージャを以下のように修正します。
Private Sub Form_Error(DataErr As Integer, Response As Integer)

    Dim strmsg As String
    strmsg = "このフィールドは、半角数字で入力して下さい。"

    Const ErrorCode = 2113

    If DataErr = ErrorCode Then
        MsgBox strmsg, vbOKOnly + vbInformation
        Response = acDataErrContinue
    Else
        Response = acDataErrDisplay
    End If

End Sub
解説
  • エラーコード2113が発生した場合、IF構文の分岐処理でメッセージボックスを表示させます。 引数ResponseにacDataErrContinueを代入すると、Access既定のエラーメッセージを省略させることができます。
  • 空白文字が入力された場合であっても、入力規則に違反してします。
    これを避けるためには、以下のようにNull値を用います。
    Is Null Or StrComp(・・・(省略)

動作確認

  1. 文字列 11se を入力します。
  2. 以下のメッセージが表示され、フォーカスを移動させることができません。

関連ページ

2005/08/04

ページの先頭へ 前ページへ戻る

 


テキストボックス入力を半角数字に限定する : 一日一見


-Microsoft Access Club-

アメリカ合衆国やヨーロッパのデータセンターからcPanelレンタルサーバーをご提供します。お支払いは日本国内の銀行振込で...。1ヵ月契約からOKです。
アメリカ合衆国やヨーロッパからcPanelレンタルサーバー。
お支払いは日本国内の銀行振込。
最短契約期間は1ヵ月契約からOKです。