お知恵をお貸し下さい。
VBAでフォームを作成し、テキストボックスに数字(日付)を入力
(入力→10/7, 表示→2005/10/07)
それを、IsDateで日付かどうかチェックさせたいのですが
下記のコードでは、例えば10月35日と入力してもエラーになりません。
(入力→10/35, 表示→1935/10/01)
2005/10/35と入力すればエラーになってくれるのですが
やはりこの方法しかないのでしょうか?
もし、良い方法がありましたらお教え下さい。
よろしくお願いします。
-----------------------------------------------------------------
Sub Test()
Dim Data As Variant
Data = TextBox16.Text
If IsDate(Data) Then
TextBox16.Value = CDate(Data)
Else
MsgBox ("正しい日付を入力してください。")
End if
End sub
-----------------------------------------------------------------
No.2ベストアンサー
- 回答日時:
こんにちは。
私の場合、このようなやり方でやっています。ここでは、1945 年にしてみました。
ただ、IsDate と CDate とを、And 条件で行ったりすると、CDate 側で、実行時エラーになります。
If IsDate(Data) Then
If Year(CDate(Data)) > 1945 Then
TextBox16.Value = CDate(Data)
Else
MsgBox "正しく日付を入れなおしてください。"
End If
Else
MsgBox "正しい日付を入力してください。"
End If
Wendy02さん! こんにちは。
久しぶりにここに質問を書いたのですが
やはりWendy02さんにお会いすることができ、本当にうれしく思います!
Wendy02さんのお名前を拝見し、涙が出る思いです(大げさではありませんヨ!)
いつものことながら、素早く的確なご回答本当にありがとうございます。
私のあの質問内容で、知りたいことも理解して頂き
ありがとうございます!
早速、利用させて頂きます。 ありがとうございました!
No.3
- 回答日時:
下のVBA(2)を作成したのですが、その前にfk_sapさんの作成された
モジュールをそのまま動かしてみましたが、期待通りエラーに
なりました。よってIsDateは正しく機能していると思います。
失礼ですが、このモジュールを TextBox16_LostFocus()に組入れて
テストをすると動作しましたが、別にマクロとして動かすと
1935/10/01などになります。どこが違うのか分りませんがTEXTボックスの
PrivateSubとしてテストお願いします。
(1)正しく動きます。
Private Sub TextBox16_LostFocus()
Dim Data As Variant
Data = TextBox16.Text
If IsDate(Data) Then
TextBox1.Value = CDate(Data)
Else
MsgBox ("正しい日付を入力してください。")
End If
End Sub
-----------------
(2)以下は別の検査方法
例えば次のようにして、YYY=年 MMM=月 DDD=日付を求めて
検証します。
Sub Test()
Dim Data As Variant
Dim DDD,MMM,YYY,OK as Integer
Data = TextBox16.Text
OK=0
If IsDate(Data) Then
'日付のチェック
YYY=Year(Data)
MMM=Month(Data)
DDD=Day(Data)
If MMM>12 then OK=1
If DDD>31 then OK1
IF MMM=2 and DDD>28 then OK=1
IF (MMM=4 or MMM=6 or MMM=9 or MMM=11) and DDD>30 then OK=1
' (本当はうるう年のチェックが必要なのですが、省略します)
Else
OK=1
End If
If OK=0 then
TextBox16.Value = CDate(Data)
Else
MsgBox ("正しい日付を入力してください。")
End if
End sub
laputartさん! 大作をありがとうございました。
少しの時間違いで、No.2さんが私の求めていた通りの回答を下さいましたので
それを利用させて頂こうかと思っていたところに
laputartさんのお答えを拝見しました。
まだ目を通させてもらっていないのですが
わざわざ、色々と書いて下さいましたので、ゆっくり拝見させて頂き
今後の私の糧とさせて頂きます。
本当にありがとうございました。
No.1
- 回答日時:
Data = Format(Year(Date),"0000") & "/" & TextBox16.Text
で強制的に今の年を設定するとかすればいいのでは?
それとも年を入れる場合もあるのですか?
この回答への補足
mshr1962さん!
先程「他にも方法があれば」などど、調子のいいことを書きましたが
No.2さんが、良い方法を教えて下さいましたので
それを利用させて頂くことにしました。
ありがとうございました。
早速ご回答ありがとうございます!
なるほど、教えて頂いた通りにすれば
10月35日だとエラーがかかりますよねー。
でも、そうなんです・・・
ほとんどは本年の日付なのですが、来年等の日付を入力する場合もあるんです・・・。
せっかく教えて頂いたのに、すみませんでした。
もしも(もしも!)、他にありましたらよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
ロボットの住む世界で流行ってる罰ゲームとは?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
入力日付がカレンダーにある日付かどうかチェックする関数はないんでしょうか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「24日の0時」って・・・
-
日付の大小の表現
-
「時間」、「期日」、「日付」...
-
差し込み印刷に当日の日付が入...
-
回覧板の日付について質問です...
-
ACCESSで日付ごとに自動連番(...
-
Excelについて
-
履歴書の日付間違いで落ちますか。
-
エクセルで6ヵ月後を自動入力で...
-
フォームの値をクエリーに反映...
-
選択クエリで実行結果を非表示...
-
EXCELで日付を****年上期、****...
-
エクセルで日付別にシートを分...
-
Excelでヘッダに前日の日付を表...
-
WEEKDAYが反映されない
-
自己推薦書についてです! 自己...
-
Between関数とDateSerial関数の...
-
accessのフォームフィルタで 土...
-
ピボットテーブルの日付フィル...
-
Array関数のネスト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「24日の0時」って・・・
-
日付の大小の表現
-
「時間」、「期日」、「日付」...
-
回覧板の日付について質問です...
-
差し込み印刷に当日の日付が入...
-
履歴書の日付間違いで落ちますか。
-
エクセル マクロ 名前を付けて...
-
Excelについて
-
パソコンで購入したデーターが...
-
2つの日付の中間の日付 エク...
-
Excelでヘッダに前日の日付を表...
-
エクセルで日付け表示で、明治...
-
エクセルで日付別にシートを分...
-
Excelで1週間毎の集計(今週と...
-
エクセルで6ヵ月後を自動入力で...
-
マクロボタンを押すと、ファイ...
-
差込印刷 縦書きで和暦(漢数...
-
日付以外のデータを抽出したい...
-
EXCELで日付を****年上期、****...
-
Facebookで投稿日時を変更できない
おすすめ情報