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

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

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

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

2079閲覧

VBA inputboxとdate型に関する質問です。

ken8888

総合スコア17

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/11/16 00:20

編集2018/11/16 00:54

おはようございます。

今下記のようなコードを作成しているのですが、
date型でない場合に再度入力できるようにon errorを使用しているのですが、
エラーが発生してしまいます。
型に合わない入力の場合すべて再入力させたいと思っています。
どのようなコードに直せばよいでしょうか?
よろしくお願いいたします。

vba

1<<省略>> 2dim dateA as date 3L1: 4on error goto L1 5dateA = cdate(inputbox("yyyy/mm/ddの形で入力")) 6<<省略>> 7 8追記 9実際にはこのようなコードを使用しています。 10一回目は、文字列を入力すると、入力しなおすように警告が出るのですが、 112回目さらに間違えるとエラー13 型が一致しません が出てきます。 12```vba 13<<省略>> 14R1: 15 On Error GoTo R2 16 dateA = InputBox("新しい期限を決めてください。(2018/11/15 の形で入力)") 17 On Error GoTo R2 18 dateA = CDate(dateA) 19<<省略>> 20R2: 21msgbox("入力しなおし") 22goto R1 23コード

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

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

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

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

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

maisumakun

2018/11/16 00:27

「エラーが発生してしまいます。」とありますが、どのようなメッセージが出たのか正確に書いてください。
ken8888

2018/11/16 00:29

実行時エラー13 型が一致しません とでます。
ken8888

2018/11/16 00:29

「あ」 と入力した場合です。
guest

回答2

0

文字列が日付に変換できるかどうかは、IsDate関数を使うと判ります。
日付に変換できることが分っている時にだけ、日付に変換するようにすれば、エラーが発生しません。

<コード例>

Dim dateA as date Dim flag as Boolean Dim inputStr as String flag=False Do inputStr = inputbox("yyyy/mm/ddの形で入力") if IsDate(inputStr) '日付に変換できる文字列が入力されていたら dateA = CDate(inputStr) '日付に変換 flag=True else msgbox("文字列:" & inputStr & "は、日付に変換できません。入力しなおして下さい。") '再入力を促すメッセージを表示する。 flag=False endif Loop Wwhile Not(flag) '日付に変換できるまで繰り返す

投稿2018/11/16 00:59

coco_bauer

総合スコア6915

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

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

ken8888

2018/11/16 01:55

ありがとうございます。 直接変換しようとするからダメなのですね
guest

0

ベストアンサー

InputBoxの戻り値を直接CDateせず、一旦受け取って日付か否かを判定すべきです。

VBA

1Dim dateA As Date 2Dim inp As String 3Do 4 inp = InputBox("yyyy/mm/ddの形で入力") 5 If IsDate(inp) Then Exit Do 6Loop 7dateA = CDate(inp) 8MsgBox dateA

投稿2018/11/16 00:54

ttyp03

総合スコア16998

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

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

ken8888

2018/11/16 00:59

無事解決できました。 ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問