- ベストアンサー
ACCESS2000でうるう年チェックを行う方法
- ACCESS2000でフィールドの入力規則を使ってうるう年のチェックを行いたいです。値のチェックはするが、チェックした値の入力も許可したいです。例えば、うるう年の2月28日を入力した場合に警告を表示し、ユーザーが手動で2月29日に修正することもできるようにしたいです。
- テキストボックスの入力規則を使うと、警告は出るが、禁止した値を入力することはできません。マクロを使っても良いですが、VBAは得意ではないため、フィールド名やフォーム名を変えて利用することができるような方法を教えていただけると助かります。
- ACCESS2000でうるう年のチェックを行う方法について教えてください。フィールドの入力規則を設定しても、チェックした値の入力ができないため、うるう年の2月28日を入力した場合でも、ユーザーが手動で2月29日に修正することができません。VBAを使用せずに、フィールド名やフォーム名を変更して利用できる方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
閏年判定関数は下記でもいいですね。 Public Function IsLeapYear(aYear As Long) As Boolean IsLeapYear = IsDate(aYear & "/2/29") End Function
その他の回答 (3)
- hatena1989
- ベストアンサー率87% (378/433)
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
- hatena1989
- ベストアンサー率87% (378/433)
> 例えば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 以上でどうでしょうか。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
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 あくまでもメッセージを出すだけなので、フォーカスの移動などに関してはちょっと配慮が必要。 月末処理が特に多くないなら、うるう年だけのために判定組み込むのはめんどくさいので、 何らかのカレンダーコントロールで入力させたらどうだろう。
お礼
完璧です! ちゃんとうるう年だけ判定出来るようになりました。 早急に回答頂き、大変助かりました。 ありがとうございました。