
失礼いたします、生年月日、基準日をテキストボックスに入力し、年齢を算出するマクロを作成してるのですが質問です。
以下のようなマクロを組んでいるのですが。
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処理)をしたいのですがどのようなコードを記入すればいいでしょうか?
No.4
- 回答日時:
シートにコマンドボタンなので、元のプログラムと少し違いますが、こんな感じ。
Private Sub CommandButton1_Click()
Dim 生年月日 As String
Dim 開始日付 As String
Dim 年齢 As String
On Error GoTo error_exit
生年月日 = "H" + Range("A1").Text + "/" + Range("B1").Text + "/" + Range("C1").Text
年齢基準日 = "H" + Range("A2").Text + "/" + Range("B2").Text + "/" + Range("C2").Text
年齢 = Application.Evaluate("=datedif(""" & Format(生年月日, "yyyy/mm/dd") _
& """,""" & Format(年齢基準日, "yyyy/mm/dd") & """,""y"")")
Range("A3").Select
Selection.Value = 年齢
nomal_exit:
Exit Sub
error_exit:
Range("A3").Select
Selection.Value = "#error"
Resume nomal_exit
End Sub
肝心なのは「エラーをon error goto文で拾って、別の所に飛ばす」「エラーで飛んできたら何か特殊処理してからresume文でどこかに戻る」の2つ。
No.3
- 回答日時:
シートにコマンドボタンなので、元のプログラムと少し違いますが、こんな感じ。
Private Sub CommandButton1_Click()
Dim 生年月日 As String
Dim 開始日付 As String
Dim 年齢 As String
On Error GoTo error_exit
生年月日 = "H" + Range("A1").Text + "/" + Range("B1").Text + "/" + Range("C1").Text
年齢基準日 = "H" + Range("A2").Text + "/" + Range("B2").Text + "/" + Range("C2").Text
年齢 = Application.Evaluate("=datedif(""" & Format(生年月日, "yyyy/mm/dd") _
& """,""" & Format(年齢基準日, "yyyy/mm/dd") & """,""y"")")
Range("A3").Select
Selection.Value = 年齢
nomal_exit:
Exit Sub
error_exit:
Range("A3").Select
Selection.Value = "#error"
Resume nomal_exit
End Sub
肝心なのは「エラーをon error goto文で拾って、別の所に飛ばす」「エラーで飛んできたら何か特殊処理してからresume文でどこかに戻る」の2つ。
エラーすべてをGOTO文で飛ばしてしまう回答者様の方法ですと、すべてのエラーが飛んでしまうのでメッセージが機能しないような気がします。
たとえば「生年月日を正しく入力してください」等のメッセージを表示させるのは難しいかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 日付の計算方法 2 2022/07/01 23:35
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
”ご生年月日”って正しい言葉遣...
-
Accessクエリ年度末年齢をおし...
-
派遣先に会社のPCを使うにあた...
-
斉藤さんの生年月日を間違えて...
-
エクセル2000。 名簿の生年月...
-
千夜釣行
-
存命の対義語、「亡くなる」と...
-
gooブログのパスワード再設定
-
Yahooに登録をした自分の生年月...
-
メルカリで間違えた生年月日を...
-
犬の血統書再発行
-
な→ なぜ 5画??
-
親友(男)のペニスをフェラする...
-
占い師になるには、どんな素質...
-
伏運ってどんな運の事を言うの...
-
九星気学でノイローゼになりそ...
-
意味を教えて下さい。 思うにま...
-
よく当たる占いで元彼と復縁す...
-
色情因縁(しきじょういんねん...
-
占い外れた・外したかた教えて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
”ご生年月日”って正しい言葉遣...
-
「生年月日: 年 月 日...
-
Accessクエリ年度末年齢をおし...
-
エクセル2000。 名簿の生年月...
-
存命の対義語、「亡くなる」と...
-
斉藤さんの生年月日を間違えて...
-
免許証のコピーをしたのですが...
-
派遣先に会社のPCを使うにあた...
-
アクセスでレポートに和暦を表...
-
生年月日セルより指定年以降誕...
-
Googleアカウントの年齢 18才の...
-
【エクセル】日付によって当月...
-
映画館に明日行くのに学生証が…
-
Accessで教えてください。
-
Accessというソフトで、生年月...
-
アクセスで和暦から6月3日現...
-
gooブログのパスワード再設定
-
エクセル ダブりカウント ダ...
-
「ピラメキーノ」のコーナー「...
-
メルカリで間違えた生年月日を...
おすすめ情報