2020-02-04

テキストボックスに入力した「文字列」の入力チェックと入力された文字数の表示

Accessのテキストボックスコントロールで文字列のチェックを行う方法についてです。

ここでは入力規則を使った例を示します。

また、改行を含むような長文の入力項目の場合、パッと見では現在の入力文字数が分からないので、現在の入力文字数をカウントして表示する処理も合わせて併記しておきます。

目次

  • テキストボックスの書式には何も設定しない
  • 文字数の制限
  • 入力文字数のカウント

テキストボックスの書式には何も設定しない

日付や数値の入力項目はテキストボックスの書式に「日付」や「数値」を設定した方が使いやすいですが、とくに制限のない文字の場合、書式にはなにも設定しないようにします。

文字数の制限

テキストボックスに入力される最大文字数を指定したい場合、プロパティ「入力規則」に以下の条件を設定します。


Is Null Or Len([txtテキスト短文])<=10

※ 「Is Null」は空OKという意味で任意の入力項目という意味

入力文字数のカウント

1行で済む程度の入力項目であれば上記の文字数の制限だけでいいですが、改行を含むような長文を入力する場合、入力中の文字数が分からず、フォーカスが外れる度にエラーメッセージが表示されてしまうのは不便です。

こういった場合、現在入力中の文字数を画面に表示すると分かりやすいです。

これを実現するためにフォーム上に用意するのは文字数を表示するためのテキストボックスコントロール。

見た目でテキストボックスと分からないようにプロパティで、境界線スタイル「透明」文字配置「右」使用可能「いいえ」編集ロック「はい」を設定します。

右横のラベルには入力可能な最大文字数を表示しています。

続いてカウント対象のテキストボックスの変更時イベントを登録し、

イベントが呼び出される度に文字数をカウントするようにします。


Private Sub txtテキスト長文_Change()
    [txtテキスト長文_入力文字数] = Len([txtテキスト長文].Text)
End Sub

ポイントはカウントする文字数を「value」ではなく「Text」にすること。

「value」は一度フォーカスが外れないと最新の文字がセットされませんが、「Text」は現在入力中の文字が取得できます。

ただし、「Text」はアクティブな状態のコントロールでしかアクセスできないプロパティなので、最初の読み込み時などでは「value」の値で文字数をカウントします。


Private Sub Form_Load()
    [txtテキスト長文_入力文字数] = Len([txtテキスト長文].value)
End Sub

実行すると以下のようになります。

対応すべき項目が多いと手間ですが、長文の入力項目ではやはりあった方がいいですね。

Access】関連記事