- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:accessテキストボックスで月日以外入力禁止に)
Accessテキストボックスで月日以外入力禁止にする方法とは?
このQ&Aのポイント
- 月日以外の入力を禁止したい場合、Accessテキストボックスに制約をかける方法があります。
- 年月日を入力する際に、自動的に年をシステムが補完する仕様になっているため、年の部分は手入力せずに月日のみを入力できるようにしたい場合は、入力規則を設定することができます。
- また、入力規則に「>=#year(now())/01/01#and<=#year(now())/12/31#」と入力して今年以外の入力をはじくよう設定してみたがうまくいかなかった場合、設定の問題やバグが考えられます。正確な原因を特定するためには、詳細な設定内容などを確認する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
フォームのテキストボックス名が、日付 だとして VBAではその更新前処理に、 Private Sub 日付_BeforeUpdate(Cancel As Integer) Dim x As Variant x = Split(Me!日付.Text, "/") If UBound(x) > 1 Then MsgBox "年は入力できません。" Cancel = True End If End Sub とすれば、『年』の入力ははじけますが、Access2010?以後では 新しく採用された日付選択カレンダーからの入力もはじいてしまいます。 なので入力規制で下記のように設定すれば、 ユーザーは無駄で面倒な『年』の入力は行わなくなると思います。 >=#year(now())/01/01#and<=#year(now())/12/31# がいけないのは ##で囲むリテラル値の中に関数を混ぜ込んでしまっている。 区切りのスペースがない。の二点です。 >=CDate(Year(Now()) & "/01/01") And <=CDate(Year(Now()) & "/12/31") のようにするか Year([日付])=Year(Date()) などとして その下のエラーメッセージ欄に、 入力できるのは今年の日付だけです。『年』の入力は不要です。 としておけば良さそうに思えます。 ※Accessのバージョンによって話が変わってくる場合がありますので次回からは Accessの(OSも)バージョンを明記しましょう。
お礼
お礼が遅くなり申し訳ありません。 今日教えていただいた方法で試したところ上手くいきました。 有難うございました。 自分で入力した入力規則が上手くいかない理由も ネットや本で調べてもわからなかったので非常に勉強になりました。 質問する際のaccessバージョンの表記も覚えておきたいと思います。 有難うございました!!