日付選択の基本
Excel VBAで「ユーザーに日付を選んでもらう」場面はよくあります。
例えば「開始日と終了日を入力して集計」「今日の日付を自動入力」など。初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- 日付は文字列ではなく「Date型」で扱う
→ 計算や比較ができる。 - 入力方法の例
InputBoxで日付を入力してもらう- UserFormに TextBox や Calendarコントロール を配置
- VBAで
Date関数を使って「今日の日付」を取得
テンプレ1:今日の日付をセルに入力
Sub InsertToday()
Worksheets("Data").Range("A1").Value = Date
End Sub
VB- ポイント:
Dateはシステム日付(今日)を返す。- 「今日の日付」を自動入力できる。
テンプレ2:InputBoxで日付を入力してセルに書き込み
Sub InputDate()
Dim d As Date
d = InputBox("日付を入力してください (例: 2025/12/11)")
Worksheets("Data").Range("A2").Value = d
End Sub
VB- ポイント:
- ユーザーに日付を入力してもらう。
- 入力値をセルに書き込む。
テンプレ3:開始日と終了日を選んで期間を計算
Sub DateRange()
Dim startDate As Date, endDate As Date
startDate = InputBox("開始日を入力してください (例: 2025/12/01)")
endDate = InputBox("終了日を入力してください (例: 2025/12/31)")
Dim days As Long
days = endDate - startDate
MsgBox "期間は " & days & " 日です"
End Sub
VB- ポイント:
- 日付同士の差を計算できる。
endDate - startDateで日数を求められる。
テンプレ4:UserFormで日付選択(TextBox利用)
UserFormに TextBox1(開始日)、TextBox2(終了日)、CommandButton1 を配置。
Private Sub CommandButton1_Click()
Dim startDate As Date, endDate As Date
If IsDate(TextBox1.Value) And IsDate(TextBox2.Value) Then
startDate = CDate(TextBox1.Value)
endDate = CDate(TextBox2.Value)
MsgBox "期間は " & endDate - startDate & " 日です"
Else
MsgBox "正しい日付を入力してください"
End If
End Sub
VB- ポイント:
IsDateで日付チェック。- 入力値を
CDateで日付型に変換。
テンプレ5:カレンダーコントロールで日付選択(古いExcelで利用可能)
UserFormに Microsoft Date and Time Picker Control を配置(環境によっては利用不可)。
Private Sub CommandButton1_Click()
Worksheets("Data").Range("A1").Value = DTPicker1.Value
End Sub
VB- ポイント:
- カレンダーから日付を選べる。
- 環境によってはコントロールが使えない場合がある。
例題で練習
'例1:今日の日付を入力
Sub Example1()
InsertToday
End Sub
'例2:InputBoxで日付入力
Sub Example2()
InputDate
End Sub
'例3:開始日と終了日で期間計算
Sub Example3()
DateRange
End Sub
'例4:UserFormで日付選択
' → CommandButton1_Click にコードを記述
VB初心者向けポイント
- 日付は「Date型」で扱う → 計算や比較が可能。
- IsDateでチェック → 入力が正しい日付か確認できる。
- CDateで変換 → 文字列を日付型に変換。
- Date関数で今日の日付 → 自動入力に便利。
- UserFormで入力欄を用意 → 実務で使いやすい。
👉 この「日付選択テンプレ」を覚えておけば、Excel VBAで 日付入力・期間計算・シートへの書き戻し を簡単に実装できます。
