エクセルのVBAで日付チェック方法を教授ください

このQ&Aのポイント
  • Win XP、エクセル2002を使用し、VBAの初心者です。ユーザーフォームにテキストボックスを作成し、入力した日付の正誤をVBAでチェックしたいです。
  • 入力した日付が正しくてもエラー処理に入ってしまい、次の処理に進むことができません。どのようにすれば解決できるでしょうか?
  • VBA初心者のため、質問の内容に問題がある可能性があります。ご了承ください。
回答を見る
  • ベストアンサー

エクセルのVBAで日付チェック方法を教授ください

OS:Win XP、エクセル2002を使用、 VBAの初心者です。 ユーザーフォームにテキストボックスを作成して、日付を入力します。 入力した日付が正しいか否かを、VBAでチェックさせたく思っています。チェックするタイミングは、ユーザーフォームの実行ボタンをクリックした後に行いたいと思っています。 現在はTextBox1をStringで宣言しております。作成中の内容を下記に転記します。 '集計データの作成 '[集計][temp]の削除、調査開始年と終了年から対象データの抽出、調査項目の編集 Dim st As String '開始年月日 Dim Mydata As Date 'st,ed の入力チェック On Error GoTo errMSG st = TextBox1.Text Mydata = st errMSG: MsgBox ("開始年月日の入力が間違っています。再度の入力をしてください。") Unload Me 分析シート作成 Exit Sub ’次の処理 実際はTextBoxは2つありますが、とりあえず1つだけ示しました。 困っているのは、入力日付が正しくてもエラー処理へ入ってしまいます。従って次の処理へ進みません。 初めての質問で質問の内容に問題があるかもしれません。お許しください。

質問者が選んだベストアンサー

  • ベストアンサー
  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.1

こんにちは  エラー処理に入る前に正しく処理の終わったフローを次の処理に導かねばなりませんね(>印はオリジナルコード、印無しの2行はサンプルコード)。 >On Error GoTo errMSG >st = TextBox1.Text >Mydata = st goto NextJOB >errMSG: >MsgBox ("開始年月日の入力が間違っています。再度の入力をしてください。") >Unload Me >分析シート作成 >Exit Sub >’次の処理 NextJOB:

yoinakasan
質問者

お礼

ありがとうございました。 質問は初めて(勿論回答もしたことがない)であり、謝礼ポイントもまだ勉強していないので、差し上げる事も良くわかりません。 on goto error での処理に NextJOB が必要なことを知りませんでした。 Excel VBA 出来る大辞典(インプレスジャパン発行)を読んでいましたが、NextJOBの事は未記載でした。 早速プログラムに挿入して、チェックしたところ問題なく動きました。 大変に助かりました。 2日間悩んだのが嘘のように思えます。 今後もよろしくお願いいたします。

関連するQ&A

  • エクセルVBA、年齢計算について質問です

    失礼いたします、生年月日、基準日をテキストボックスに入力し、年齢を算出するマクロを作成してるのですが質問です。 以下のようなマクロを組んでいるのですが。 Dim 生年月日 As String Dim 開始日付 As String Dim 年齢 As String 生年月日 = "H" + UserForm1.TextBox1.Value + "/" + UserForm1.TextBox2.Value + "/" + UserForm1.TextBox3.Value 年齢基準日 = "H" + UserForm4.TextBox1.Value + "/" + UserForm1.TextBox5.Value + "/" + UserForm1.TextBox6.Value 年齢 = Application.Evaluate("=datedif(""" & Format(生年月日, "yyyy/mm/dd") _ & """,""" & Format(年齢基準日, "yyyy/mm/dd") & """,""y"")") 上記のようにそれぞれH”年”/”月”/”日”という形で取得しています。 この場合、適正な値が入力されると上手くいきますが、日付として成立しない値(例えば月に80など)を入力した場合にエラーが発生します。 エラーが発生した場合にエラー処理(例としてMsgBox+Goto処理)をしたいのですがどのようなコードを記入すればいいでしょうか?

  • EXCEL VBA---IsDate

    お知恵をお貸し下さい。 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 -----------------------------------------------------------------

  • エクセルVBAでの日付変換

    FTPで送信されたデータをVBAで加工してテキスト形式に落とし込むVBAを作っているのですが日付部分で困っております。 dim strDate as string strDate=format(now(),"yyyymmddhhmmss") 上記で作成したデータをP列に流し込み作成されたデータをテキストに変換し保存すると2.00901E+13と変換されてしまいます。 どのような対処方法がありますでしょうか?

  • EXCEL 入力された日付のチェック

    EXCELのある列に、日付が「2006/5/26」という形式で入力されます。 ですが、入力間違いで、本来ない年月日を入力した場合、エラーとしたいのですが、どのようにするのが、一番効率よいでしょうか。 VBAでプログラムを記述していますので、VBAの記述で教えて頂けますでしょうか。 よろしくお願いします。

  • VBAでの年齢計算がうまくいきません。

    失礼いたします。  VBAで年齢の計算を行いたいのですがなかなかうまくいきません。 =sub Dim 開始日付 As String Dim 終了日付 As String Dim 年齢 As String 開始日付 = "S54/4/1" 終了日付 = "H22/4/1" 年齢 = "=DATEDIF(開始日付,終了日付,""Y"")" =endsub としても、DATEDIF関数は引数をうまく処理してくれないのです。 エクセル関数を使わずに、年齢を算出するか。 エクセル関数内に引数を代入する方法があれば教えていただけないでしょうか?

  • エクセルVBA フォームの日付を指定

    データ登録フォームの日付を指定したいのですがどうすればよいでしょうか? まず、userform5を開きます。規定値は当日にしていますが、過去のものも入れられるようクリアして任意の日付を入力します。 その後、実行ボタンを押すとuserform2を開き、入力開始するのですが、その時の撮影日textboxの値にさきほど入力した値を入れたいです。 変数はPrivate torokudate As Dateこのような形でよいと思いましたが、どこに書けば他のフォームでも利用できるのでしょうか? うまくいってるのかどうかわかりませんが、表示が0:00とされました。 撮影日textboxのプロパティ設定がわるいのかどうかもよくわかりません。 初歩的なVBAですが、よろしくお願いします。

  • VBA での日付の計算

    お世話になってます。 Access VBA 初心者です。 string型変数に日付(YYYYMMDD)がセットされています。 その日付に1日プラスした日付を算出したいのですが、 どうすればよいのかよく分かりません。 たとえば Dim w_Date As String w_Date = "20070726" としたならば、 w_Dateは"20070727"となるようにしたいのですが。。。 よろしくお願いいたします。

  • エクセル VBA 今日の日付を変数にする

    いつまでたってもVBA初心者のものですが 前回は、セルに入力されている日付を変数に利用する場合のことを 聞かしていただいたのですが 今回は、今日の日付を変数に利用する場合はどうすればいいのでしょう? Sub Today() Dim i As String i = Day(Today()) Range("A1").Value = i End Sub こんな感じなんですけど上手くいきません 何から何まで頼りっきりですが、よろしくお願いします

  • EXCEL VBAでの日付の表示について

    EXCEL2003のVBAを始めたばかりなので、初歩的なことですが、分かる方ぜひ教えてください。 フォーム上に、『取得年月日』という項目をつくり、表示を"H○○.○○.○○"としたいのですが、どのように作成をしたらよいのでしょうか? ちなみに、その日付を使って更新をしたり、計算をしたりもします。 よろしくお願いします。

  • ExcelのVBAでの新規BOOK追加

    こんばんは。 ExcelのVBAでユーザーフォーム上にTextboxがとボタンがあるとします。TextboxにはDATEで今日の日付が入力されています。ここではたとえば07/5/15と入力されていると仮定します。この状態でボタンを押すと同一フォルダー内に「日記06」という感じに日記と入力されている年を合わせた「日記06.xls」というファイルを作成したいのですが可能なのでしょうか?又、作成するときBookのSheetを「1月」「2月」…「12月」「全体」と13Sheet作成して、07/5/15なので「5月」のSheetにActivateさせたいのですが可能なのでしょうか?本とか見ていろいろやってはいるんですがDATEから年と月を取り出して上記のように処理する方法がよく分かりません。よろしくお願いします。