
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
passwordが入れられません・・・・
-
フォームで入力しても反映されない
-
Excelで入力したデータを自動的...
-
EXCELのユーザーフォームで入力...
-
Access2007、フォームのテキス...
-
Accessでの小数点以下入力規制...
-
アクセス2003 入力規則
-
ファイルメーカー 一ヵ月後の...
-
アクセスのテキストボックスの...
-
Access2007 textboxに入力でき...
-
Accessで西暦の年だけ表示したい
-
Accessでの和暦の入力
-
入力条件の指定・・・・
-
Microsoft Accessのフォームで...
-
ユーザーフォームで数字にカン...
-
Access(office)のマクロの「値...
-
ACCESS2000にて「うるう年」の...
-
PostgreSQLでのクエリ登録
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
passwordが入れられません・・・・
-
フォームで入力しても反映されない
-
Excelで入力したデータを自動的...
-
Access(office)のマクロの「値...
-
このオブジェクトに値を代入す...
-
アクセスのテキストボックスの...
-
入力規則違反-任意のエラーメ...
-
Accessで小数の入力について
-
ファイルメーカー 一ヵ月後の...
-
Access2007 textboxに入力でき...
-
日付のテキストボックスに(例...
-
SQLで構文を間違って入力して;...
-
Access2007、フォームのテキス...
-
パラメータクエリで抽出がうま...
-
Accessで西暦の年だけ表示したい
-
ACCESS2000にて「うるう年」の...
-
EXCELのユーザーフォームで入力...
-
アクセスでの回数の表示
おすすめ情報