#615 非連結のテキストボックスの入力文字数を制限するには? フォーム、VBA

Accessのフォームでは、フォーム自体をテーブルやクエリと連結するとともに、コントロールの「コントロールソース」プロパティを所定のフィールドに設定することによって、両者が連結され、そのテーブル上のフィールドの属性に基づいてコントロールからの入力内容が制限されます。

たとえば、テキスト型フィールドであれば指定長以上は入力できない、数値型フィールドであれば文字は入力できない、整数型フィールドであれば小数は入力できない、日付型フィールドであれば実在しない日付は入力することができない、といった制御をAccessが勝手にやってくれます。


一方、非連結のコントロール、つまりコントロールソースプロパティが設定されていない場合には、そのような制限を自動的に行わせることはできませんので、フォームのデザイン上で設定してやる必要があります。

ここではその一例として、非連結のテキストボックスの入力文字数を制限する方法について説明します。


■プロパティによる設定
入力文字数を制限したいテキストボックスについて、次のプロパティを設定します。なおここではテキストボックスの名前は「テキスト0」としています。
  • 入力規則 → Len([テキスト0])<=5

  • エラーメッセージ → 5文字以内を入力してください。

もちろん、入力規則に設定するコントロール名や文字長さはケースに応じて書き換えます。またエラーメッセージも自由に設定してかまいません。

実行例:
6文字入力してEnterキーを押したとき




■イベントプロシージャによる処理
入力文字数を制限したいテキストボックスの「Change/変更時」イベントプロシージャに次のように記述を行います。このイベントは、テキストボックスに1文字入力されるたびに発生しますので、その都度全体の長さをチェックすることになります。なお、未確定の入力途中のデータ内容を取得するには「Text」プロパティを使うことに注意してください。

Private Sub テキスト0_Change()
'テキストボックスの変更時

  If Len(Me!テキスト0.Text) > 5 Then
    Beep
    MsgBox "5文字以内を入力してください。", vbOKOnly + vbExclamation
  End If

End Sub

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved