質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

3095閲覧

VBSで日付妥当性チェック(yyyymmdd)

退会済みユーザー

退会済みユーザー

総合スコア0

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2022/06/30 02:34

編集2022/06/30 02:35

VBSを使用して、日付の妥当性チェックを行いたいと思っています。
文字列の日付(yyyymmdd)が日付として正しいかチェックを行います。

○試したこと
①isDate関数を試しましたが、日付と認識されず常に「False」で返却されます。
②「yyyy」「mm」「dd」でスプリットし、「/」を結合、その後isDate関数を使用しました。動作しますが、「mm」や「dd」を1桁で入れられた場合が危険に感じます。

○質問
②より良い方法はないのでしょうか?
日付の入力はInputBoxを予定しています。
また「yyyy/mm/dd」の入力への仕様変更はできないです。

○ソースコード

Dim inDate inDate = InputBox("日付の入力(yyyymmdd)") If IsNull(inDate) or inDate= "" Then MsgBox "未入力です。" Wscript.Quit End If '①isDate関数 'If IsDate(inDate) = False Then ' MsgBox "未入力です。" ' Wscript.Quit 'End If '②スプリット・isDate関数 Dim yyyy Dim mm Dim dd Dim checkDate yyyy = Mid(inDate,1,4) mm = Mid(inDate,5,2) dd = Mid(inDate,7,2) checkDate = yyyy &"/" & mm &"/" & dd If IsDate(checkDate) = False Then MsgBox "日付が正しくありません。" Wscript.Quit End If

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

②「yyyy」「mm」「dd」でスプリットし、「/」を結合、その後isDate関数を使用しました。動作しますが、「mm」や「dd」を1桁で入れられた場合が危険に感じます。

「mm」や「dd」を1桁で入力するのを許可したら、例えば、
2022123
と入力されたとき、2022/1/23 なのか 2022/12/3 なのか判断できません。
ですので、8桁入力は必須の仕様にすべきでしょう。

vb

1Dim inDate 2inDate = InputBox("日付の入力(yyyymmdd)") 3 4If IsNull(inDate) or inDate= "" Then 5 MsgBox "未入力です。" 6 Wscript.Quit 7End If 8 9If Len(inDate) <> 8 Then 10 MsgBox "8桁(yyyymmdd)で入力してください。" 11 Wscript.Quit 12End If 13 14Dim yyyy 15Dim mm 16Dim dd 17Dim checkDate 18yyyy = Mid(inDate,1,4) 19mm = Mid(inDate,5,2) 20dd = Mid(inDate,7,2) 21checkDate = yyyy &"/" & mm &"/" & dd 22If IsDate(checkDate) = False Then 23 MsgBox "日付が正しくありません。" 24 Wscript.Quit 25End If

投稿2022/06/30 03:41

編集2022/06/30 05:31
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/06/30 04:42

回答ありがとうございます。 頂いたスクリプトをダブルクリックし、「20220630」を入力して実行したところ、下記エラーが発生しました。 解決方法をご存知でしたらご教示ください。 行 :16 文字: 1 エラー:型が一致しません。:'Format' コード:800A000D ソース:Microsoft VBScript 実行時エラー
hatena19

2022/06/30 05:29

VBS ではFormat関数は使えないんですね。 なら、質問のコードのようにMidで分割してください。 回答のコードを修正しておきます。
退会済みユーザー

退会済みユーザー

2022/06/30 05:53

ありがとうございます。 Midで分割するようにします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問