ACCESS2000にて、フィールドの入力規則で「うるう年」のチェックをしたいです。
値のチェックはしますが、チェックした値の入力も許可したいのですが、それができてません。
例えば2012/2/28、2016/2/28などは「うるう年ですけど、2/29じゃなくて大丈夫ですか?」
のような警告をし、入力しているユーザーが2/28で大丈夫であれば、2/28も入力可能
2/29に修正が必要であれば、ユーザーが手動で2/29と入力し直す、としたいです。
テクストボックスの入力規則で制限してしまうと、警告は出るものの、
その禁止した値は入力ができません。
マクロでも良いです。
VBAは得意でないので。。
フィールド名やフォーム名を変えればそのまま貼付られるような感じで
お教え頂けるとありがたいです。
どうかお知恵お貸し下さい。
宜しくお願い致します。
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
あくまでもメッセージを出すだけなので、フォーカスの移動などに関してはちょっと配慮が必要。
月末処理が特に多くないなら、うるう年だけのために判定組み込むのはめんどくさいので、
何らかのカレンダーコントロールで入力させたらどうだろう。
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.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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Excel(エクセル) エクセルで指定範囲にある名前と重複した場合に入力できないようにしたい 1 2023/07/13 09:58
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
- Access(アクセス) Accessフォームで複数条件でフィールドの値を表示する方法 4 2022/07/21 10:47
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- クレジットカード 楽天を装ったフィッシング詐欺メールについて。 こんばんは。 楽天を装ったメールが来ておりまして、内容 4 2022/10/17 20:29
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
エクセル 自動入力
-
ACCESS 時間の入力方法
-
このオブジェクトに値を代入す...
-
Excelで入力したデータを自動的...
-
フォームで入力しても反映されない
-
アクセスの顧客管理情報・リレ...
-
アクセスで数値型のフィールド...
-
アクセス コンボボックスのリ...
-
日付のテキストボックスに(例...
-
【Excel関数】カレンダーで文字...
-
アクセスのテキストボックスの...
-
ひらがな、カタカナ、漢字をま...
-
ACCESSのテキストボックスの連...
-
ファイルメーカで経過月数を出...
-
EXCELのユーザーフォームで入力...
-
sqlldrの使用方法について
-
アクセス2007 フォーム入力で...
-
Accessのパラメータクエリに入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
Access(office)のマクロの「値...
-
Excelで入力したデータを自動的...
-
日付のテキストボックスに(例...
-
Access2007 textboxに入力でき...
-
このオブジェクトに値を代入す...
-
アクセスのテキストボックスの...
-
ファイルメーカー 一ヵ月後の...
-
ユーザーフォームで数字にカン...
-
sqlldrの使用方法について
-
ACCESS 時間の入力方法
-
入力規則違反-任意のエラーメ...
-
Access2007、フォームのテキス...
-
Accessで主キーの最終番号を取...
-
ファイルメーカで経過月数を出...
-
Accessで所要時間の足し算
-
Accessのパラメータクエリに入...
おすすめ情報