質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

1回答

387閲覧

access 文字数制限時エラー

wkou4627

総合スコア13

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2023/09/07 13:55

編集2023/09/12 00:49

実現したいこと

・検索フォームにて、非連結のテキストボックス(txt_個人番号)に8文字以外の番号を入力すると「8文字で入力してください」とポップアップが表示される。
・クリアボタンを押すと、テキストボックスに入力した番号がクリアされ、そのまま再度入力できる状態となるようにしたい。
<クリアの方法>
テキストボックスと同じフォームに、クリアボタン(btn_クリア)を設置。
そのボタンを押すと、テキストボックス内の番号が空欄になる。

VBA

1Private Sub btn_クリア_Click() 2 Me!txt_個人番号 = "" 3End Sub

前提

検索フォームを作っています。
非連結のテキストボックス(txt_個人番号)に番号を入力・検索ボタンを押すと、別フォームに切り替わり入力した番号と一致するデータが抽出されます。
検索時に入力する際、入力間違いを防ぐため8文字の半角数字以外を入力するとポップアップでエラーが正しく表示されるようにしたいです。
8文字以外を入力すると、ポップアップが表示されるところまではできています。

発生している問題・エラーメッセージ

8文字以外を入力すると、エラーのポップアップが表示されるもののクリアボタンを押しても同じポップアップが出てしまいます。
修正しようとテキストボックスをクリックしても、おなじポップアップが出現し消えません。

該当のソースコード

VBA

1Len(Nz([txt_個人番号],""))=8

試したこと

一番最初は、テキストボックスのプロパティシート:「入力規則」の欄に以下を試しました。
エラーメッセージには、「8文字で入力してください」と記述。

Len([txt_個人番号])=8

クリアするとエラーがでたため、テキストボックス(txt_個人番号)が空欄時についての記述が必要と思い、

Len([txt_個人番号])=8 0r Len(txt_個人番号])=""

を試しました。同じエラーが起きるので、

Len(Nz([txt_個人番号],""))=8

としましたが、ポップアップが表示され続ける状態になります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

空欄時の条件を追加するには、以下の様にします。

VBA

1Len([txt_個人番号])=8 0r Len([txt_個人番号])=0

TextBox.ValidationRule プロパティ (Access)

リンク先のパターンで以下の様にした場合、空白入力後に空欄に戻すには[Esc]キーで入力をキャンセルしないとエラーが出続けます。

VBA

1Len([txt_個人番号])=8 0r Is Null

クリアするとエラーがでたため

どのようにクリアされているかによりますけど、少なくとも[Esc]キーで入力をキャンセルすればエラーにはならないと思います。

投稿2023/09/08 00:28

編集2023/09/08 04:40
sazi

総合スコア25430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wkou4627

2023/09/12 00:45

ご回答ありがとうございます。 私の質問の記載に不足があり申し訳なかったのですが、今回クリアの方法には、クリアボタン(btn_クリア)を設置し、そのボタンを押すとテキストボックス(txt_個人番号)内が空欄になるという方法を用いています。クリアボタンのイベントプロシージャには、以下のコードをかいています。 ```VBA Private Sub btn_クリア_Click() Me!txt_個人番号 = "" End Sub ``` このクリアの仕方で、教えていただいた入力文字数制限のコードをためしてみたところ、エラーが出てきてしまいました。(回答いただいているように[Esc]で入力をキャンセルすれば、エラーでませんでした)具体的なエラーは以下の通りです。 8文字以外で入力→エラー→OKで抜ける→クリアボタンを押す→エラーのポップアップ その後何を押してもエラーのポップアップが出てきてしまいます・・・
sazi

2023/09/12 01:51 編集

「[Esc]による入力のキャンセル」というのは値をNullにするという事です。 ですので、空文字("")ではなくNullを設定して下さい。 txt_個人番号 = Null
wkou4627

2023/09/14 15:51

ご回答ありがとうございます。 クリアボタンのイベントプロシージャを以下に修正しました。 ```VBA Private Sub btn_クリア_Click() Me!txt_個人番号 = Null End Sub ``` 8文字以上もしくは8文字以下を入力→検索ボタン→文字数えラーのポップアップ→OKで抜けた後8文字で入力→検索もしくはクリアボタンの流れは正しく動かすことができました。 ですが、やはり、8文字以上もしくは8文字以下で入力のまま、クリアボタンを押すとエラーのポップアップが出続けてしまいます。。。
wkou4627

2023/09/14 15:52

テキストボックスに入力制限をかけることによって、検索ボタンにだけではなくクリアボタンにまで文字数制限がきいてしまっているためエラーが表示されてしまうのでしょうか・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問