首先,我建议始终使用 Option Explicit。这可以通过 MS VB 窗口中的菜单为将来的项目启用:工具>选项>编辑器(选项卡)>需要变量声明(复选框)
现在开始工作:如果您想要一个范围(本示例中为 B2:B25 和 C2:C25)以 1 小时为增量填充日期 + 时间,我建议使用以下内容:
Option Explicit
Private Sub Workbook_Open()
Dim SelRange As Range
Dim b As Range
Dim dtDate As Date
Dim intHours As Long
'Enter the starting date and time
dtDate = InputBox("Start date", , Date)
'Initate our hours counter
intHours = 0
'Assign a worksheet range for our date-time range
Set SelRange = Range("B2:B25")
'Write the date-time range with 1 hour increments
For Each b In SelRange
b.Value2 = dtDate + TimeSerial(intHours, 0, 0)
'24 hours later in the cell to the right of this
b.Offset(0, 1).Value2 = dtDate + 1 + TimeSerial(intHours, 0, 0)
intHours = intHours + 1
'To avoid an overflow in the TimeSerial function the intHours are keps smaller than then Integer maximum
If intHours > 24 Then
intHours = intHours - 24
dtDate = dtDate + 1
End If
Next
End Sub
正如您提到的那样,您从日期开始,因此我从 InputBox 中的日期(没有时间)开始。
现在,如果您希望仅在有限的时间内重复此操作,您可以通过限制它适用的范围(在本例中为 B2:B25)来做到这一点,循环将在到达底部时停止。
它现在会自动用未来 24 小时的日期时间填充 C 列,如果您只想让它具有未来的日期,请跳过 C 列行中的 Timeserial 部分。如果您希望这在未来 1 小时,则将该行更改为:
b.Offset(0, 1).Value2 = dtDate + TimeSerial(intHours +1, 0, 0)