ACCESS2000にて、フィールドの入力規則で「うるう年」のチェックをしたいです。
値のチェックはしますが、チェックした値の入力も許可したいのですが、それができてません。
例えば2012/2/28、2016/2/28などは「うるう年ですけど、2/29じゃなくて大丈夫ですか?」
のような警告をし、入力しているユーザーが2/28で大丈夫であれば、2/28も入力可能
2/29に修正が必要であれば、ユーザーが手動で2/29と入力し直す、としたいです。
テクストボックスの入力規則で制限してしまうと、警告は出るものの、
その禁止した値は入力ができません。
マクロでも良いです。
VBAは得意でないので。。
フィールド名やフォーム名を変えればそのまま貼付られるような感じで
お教え頂けるとありがたいです。
どうかお知恵お貸し下さい。
宜しくお願い致します。
No.3
- 回答日時:
Public Function IsLeapYear(aYear As Long) As Boolean
IsLeapYear = Month(DateSerial(aYear, 2, 29)) = _
Month(DateSerial(aYear, 2, 28))
End Function
Private Sub テキスト7_BeforeUpdate(Cancel As Integer)
Const cMsg = "閏年ですけど、2/29じゃなくて大丈夫ですか?"
If Format(Me.テキスト7.Text, "mdd") = "228" And _
IsLeapYear(Year(Me.テキスト7.Text)) Then
If MsgBox(cMsg, vbYesNo) = vbNo Then
Cancel = True
End If
End If
End Sub
No.2
- 回答日時:
> 例えば2012/2/28、2016/2/28などは「うるう年ですけど、2/29じゃなくて大丈夫ですか?」
> のような警告をし、入力しているユーザーが2/28で大丈夫であれば、2/28も入力可能
> 2/29に修正が必要であれば、ユーザーが手動で2/29と入力し直す、としたいです。
下記の関数を標準モジュールに作成します。
'閏年がどうか判定する関数
Public Function IsLeapYear(aYear As Long) As Boolean
IsLeapYear = Month(DateSerial(aYear, 2, 29)) = Month(DateSerial(aYear, 2, 28))
End Function
テキストボックスの更新前処理に、
Private Sub テキスト7_BeforeUpdate(Cancel As Integer)
If Format(Me.テキスト7.Text, "mdd") = "228" And IsLeapYear(Year(Me.テキスト7.Text)) Then
If MsgBox("閏年ですけど、2/29じゃなくて大丈夫ですか?", vbYesNo) = vbNo Then
Cancel = True
End If
End If
End Sub
以上でどうでしょうか。
No.1
- 回答日時:
VBAしかわかりませんが、月末処理が多いのなら、
月末であるかどうか判定するファンクションをつくり、
Function endofmonth(hDate) As Boolean
endofmonth = False
tyear = Year(hDate)
tmonth = Month(hDate)
If hDate = DateSerial(tyear, tmonth, 0) Then endofmonth = True
End function
コントロールの更新後処理などで、メッセージを出すのが楽。
Private Sub テキスト0_AfterUpdate()
If endofmonth(text0) <> True Then
MsgBox "月末ではありません"
End If
End Sub
あくまでもメッセージを出すだけなので、フォーカスの移動などに関してはちょっと配慮が必要。
月末処理が特に多くないなら、うるう年だけのために判定組み込むのはめんどくさいので、
何らかのカレンダーコントロールで入力させたらどうだろう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
【お題】 ・世界最古のコンビニについて知ってる事を教えてください
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
アクセス エラーを数値「0」に変換するには
Access(アクセス)
-
-
4
Accessを使って日付を比較したい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
Accessのパラメータクエリに入...
-
このオブジェクトに値を代入す...
-
アクセスのテキストボックスの...
-
access 通貨型 表示桁数 4捨...
-
Excelで入力したデータを自動的...
-
ACCESS2000にて「うるう年」の...
-
ACCESS 時間の入力方法
-
あるレコードのフィールドだけ...
-
【Access】 VBA 入力漏れを防...
-
Access(office)のマクロの「値...
-
アクセス コンボボックスのリ...
-
Access VBA でのフォーム名の取...
-
accessのテーブルの書式と定型入力
-
Accessのメモ型について
-
MA ACCESSデータベースに詳しい...
-
Access2007、フォームのテキス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
Excelで入力したデータを自動的...
-
Access(office)のマクロの「値...
-
アクセスのテキストボックスの...
-
ユーザーフォームで数字にカン...
-
このオブジェクトに値を代入す...
-
Access2007、フォームのテキス...
-
Access2007 textboxに入力でき...
-
EXCELのユーザーフォームで入力...
-
アクセス2003 入力規則
-
Accessのパラメータクエリに入...
-
Access2000VBAでEscキーを禁止!
-
フォームテキスト内文字の縦位...
-
入力規則違反-任意のエラーメ...
-
Accessで小数の入力について
-
日付のテキストボックスに(例...
-
Accessで所要時間の足し算
おすすめ情報