最近のタスクでは、ユーザーからの入力を受け入れる必要がありました。入力値の1つは生年月日であり、もちろんそれは日付でなければなりません。

私がやっていたのは、入力をバリアントデータ型に格納することです。これにより、コードにエラーがなくなり、ユーザーが指定した値をコードが受け入れていました。以下はコードです:

Dim dob As Variant

dob = Application.InputBox("Enter Your Date of Birth")

もちろん、これは、ユーザーが有効な日付ではない可能性のある任意の値を入力できるため、誤ったアプローチでした。

コードで無効な日付を検出し、ユーザーに有効な日付を入力してサブルーチンを終了するように依頼する必要があります。

これは、ユーザーが有効な日付のみを入力として入力できるようにするコードです。

Sub check_date()

Dim dob As Date

On Error GoTo Errorhandler

dob = Application.InputBox("Enter Your Date of Birth")

On Error GoTo 0

Debug.Print dob

Exit Sub

Errorhandler:

MsgBox "Please enter a valid date."

End Sub

上記のコードを実行すると、生年月日を入力するように求められます。無効な日付を入力すると、有効な日付を入力して手順を終了するように求められます。

imageHow does it work?* The first and most important thing we have done is to use the Date type variable to store the expected date. Now, if you try to store a value that is not a valid date, it will through an error of “type mismatch”.

次に、On Error Goto * errorハンドラーを使用してこのエラーをキャッチします。

On Error GoTo Errorhandler

dob = Application.InputBox("Enter Your Date of Birth")

On Error GoTo 0

On Errorを使用して、EndSubステートメントの直前にあるタグErrorhandlerにコントロールをジャンプします。したがって、ユーザーは有効な日付を入力するように求められ、サブは終了します。

Errorhandler:

MsgBox "Please enter a valid date."

End Sub

ユーザーが有効な日付を入力すると、制御は正常に流れ、入力はdob変数に保存されます。コントロールがerrorhandlerに移動せず、そこでプロシージャを終了するように、Exitサブステートメントを配置しました。したがって、exitsubの前にすべてのendステートメントを配置します。以上です。

そうですね、これはユーザーが有効な日付のみを入力するように制限する方法です。

VBAの日付やその他のExcel / VBA関連のクエリについて疑問がある場合は、お知らせください。以下のコメントセクションでお問い合わせください。

関連記事:

link:/ vba-insert-date-time-stamp-with-vba [Insert Date Time Stamp with VBA] |このVBAコードを使用して特定のセルが入力されたときのタイムスタンプを入力します。列Aに値を入力すると、列Bの隣接するセルに入力時刻が自動的に入力されます。

VBAの日付と時刻 |このページで、VBAの日付と時刻に関するすべてのトピックを検索します。

人気の記事:

link:/ keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [生産性を高めるための50のExcelショートカット] |あなたの仕事をより速くしてください。これらの50のショートカットにより、Excelでの作業がさらに高速になります。

link:/ forms-and-functions-introduction-of-vlookup-function [ExcelのVLOOKUP関数] |これは、さまざまな範囲やシートから値を検索するために使用される、Excelの最も使用され人気のある関数の1つです。 link:/ Tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] |この驚くべき関数を使用して、条件付きの値をカウントします。特定の値をカウントするためにデータをフィルタリングする必要はありません。

ダッシュボードを準備するには、Countif関数が不可欠です。

link:/ excel-formula-and-function-excel-sumif-function [ExcelでSUMIF関数を使用する方法] |これは、ダッシュボードのもう1つの重要な機能です。これは、特定の条件で値を合計するのに役立ちます。