Option Explicit
Sub TEST()
Dim Brr, Crr, i&, N&, Ds As Date, Dn As Date
Brr = Range([A2], Cells(Rows.Count, "A").End(3))
ReDim Crr(1 To UBound(Brr), 1 To 2)
For i = 1 To UBound(Brr)
If Not IsDate(Brr(i, 1)) Then Crr(i, 1) = "←非公曆日": N = N + 1
Next
'↑先設迴圈檢測日期是否為正確公曆日期
If N > 0 Then [B2].Resize(UBound(Crr), 2) = Crr: MsgBox "資料錯誤! 請修正後再執行!": Exit Sub
'↑如果有錯必須先修正錯誤,再重新執行
For i = 1 To UBound(Brr) - 1
Crr(i, 1) = Brr(i + 1, 1) & "-" & Brr(i, 1)
Ds = Brr(i + 1, 1): Dn = Brr(i, 1): Crr(i, 2) = Ds - Dn
'↑由於變數宣告,會自動將字串轉換為日期
Next
[B2].Resize(UBound(Crr), 2) = Crr
Erase Brr, Crr
End Sub