回答編集履歴

2 コード追記

hatena19

hatena19 score 22241

2020/09/30 14:20  投稿

解決済みですが、こんな方法も。
```vba
Public Sub template()
   Dim dateStartDate As Date  '開始日
   Dim dateEndDate As Date   '終了日
   dateStartDate = wsDateList.Range("D2").Value
   dateEndDate = wsDateList.Range("E2").Value
   Dim DateCell As Range
   Set DateCell = wsTemplate2.Range("E2") '日付入力セル
   
   Dim Dayone As Date
   For Dayone = dateStartDate To dateEndDate '開始日から終了日までループ
       DateCell.Value = Dayone
       Set DateCell = DateCell.Offset(, 1) ’入力セルを右へ移動
   Next Dayone
End Sub
```
Date型も中身は数値型(倍精度浮動小数点型)なのでForでループできます。
Date型も中身は数値型(倍精度浮動小数点型)なのでForでループできます。
---
ループを使わずにやる方法も。
```vba
Public Sub template1()
   Dim dateStartDate As Date  '開始日
   Dim dateEndDate As Date   '終了日
   Dim loncntDay As Long
   dateStartDate = wsDateList.Range("D2")
   dateEndDate = wsDateList.Range("E2")
   loncntDay = DateDiff("d", dateStartDate, dateEndDate)
   
   wsTemplate2.Range("E2").Value = dateStartDate
   With wsTemplate2.Range("F2").Resize(, loncntDay)
       .Formula = "=E2+1" '左のセルに+1
       .Value = .Value   '式を値に変換
   End With
End Sub
```
1 コード修正

hatena19

hatena19 score 22241

2020/09/30 14:06  投稿

解決済みですが、こんな方法も。
```vba
Public Sub template()
   Dim dateStartDate As Date  '開始日
   Dim dateEndDate As Date   '終了日
   dateStartDate = wsDateList.Range("D2").Value
   dateEndDate = wsDateList.Range("E2").Value
   Dim DateCell As Range
   Set DateCell = wsTemplate2.Range("E2") '日付入力セル
   
   
   Dim Dayone As Date
   For Dayone = dateStartDate To dateEndDate '開始日から終了日までループ
       DateCell.Value = Dayone
       Set DateCell = DateCell.Offset(, 1) ’入力セルを右へ移動
   Next Dayone
End Sub
```
```
Date型も中身は数値型(倍精度浮動小数点型)なのでForでループできます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る