使用VBA Excel 24小时更改日期和时间

使用VBA Excel 24小时更改日期和时间,excel,excel-2010,vba,Excel,Excel 2010,Vba,如何将24小时内的时间添加到已创建的宏中?下面是宏。我需要给它加上一个时间戳,我不知道怎么加 Private Sub Workbook_Open() Dim dtDate As Date dtDate = InputBox("Date", , Date) Set SelRange = Range("B:B") For Each b In SelRange.Rows b.Value = dtDate b.Offset(0, 1).Value = dtDate + 1 Next End Sub

如何将24小时内的时间添加到已创建的宏中?下面是宏。我需要给它加上一个时间戳,我不知道怎么加

Private Sub Workbook_Open()

Dim dtDate As Date

dtDate = InputBox("Date", , Date)

Set SelRange = Range("B:B")
For Each b In SelRange.Rows
b.Value = dtDate
b.Offset(0, 1).Value = dtDate + 1
Next
End Sub
我需要根据此工作表的宏增加24小时的时间。我有一个我需要做的例子。在本例中,日期和时间显示我需要在24小时内增加时间


首先,我建议始终使用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
正如您提到的,您从一个日期开始,因此我在输入框中以一个日期(无时间)开始

现在,如果您希望只重复有限的次数,您可以通过限制其适用的范围(在本例中为B2:B25)来执行此操作,循环将在到达底部时停止

现在,它会在C列中自动填充一个未来24小时的日期时间,如果您只想让它具有未来的日期,请跳过C列行中的时间序列部分。如果您希望这一时间为1小时,请将该行更改为:

b.Offset(0, 1).Value2 = dtDate + TimeSerial(intHours +1, 0, 0)

首先,我建议始终使用OptionExplicit。这可以通过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
正如您提到的,您从一个日期开始,因此我在输入框中以一个日期(无时间)开始

现在,如果您希望只重复有限的次数,您可以通过限制其适用的范围(在本例中为B2:B25)来执行此操作,循环将在到达底部时停止

现在,它会在C列中自动填充一个未来24小时的日期时间,如果您只想让它具有未来的日期,请跳过C列行中的时间序列部分。如果您希望这一时间为1小时,请将该行更改为:

b.Offset(0, 1).Value2 = dtDate + TimeSerial(intHours +1, 0, 0)

我需要给它添加一个时间戳
-什么?工作表中的单元格?是否要对宏计时?@scott将宏计时到工作表中的单元格。谢谢。
我需要在上面加一个时间戳
-什么?工作表中的单元格?是否要对宏计时?@scott将宏计时到工作表中的单元格。谢谢。我希望它保持范围B和偏移量+1的当前日期,保持相同的日期而不发生外循环。如果这是有意义的?如果我理解正确,你希望从一天开始,然后有24行(每小时1行)?是的+1天偏移到另一个单元格我使用Value2作为值的方式可以在excel中扭曲日期(Value2保留日期值的实际数值)。当您的本地日期格式不是美国日期格式时,这主要是一个问题。是否有办法将当天复制到另一个范围(比如B52到B75)?这是我的最后一个问题。我保证。我希望它保持范围B和偏移量+1的当前日期,保持相同的日期,不带外循环。如果这是有意义的?如果我理解正确,你希望从一天开始,然后有24行(每小时1行)?是的+1天偏移到另一个单元格我使用Value2作为值的方式可以在excel中扭曲日期(Value2保留日期值的实际数值)。当您的本地日期格式不是美国日期格式时,这主要是一个问题。是否有办法将当天复制到另一个范围(比如B52到B75)?这是我的最后一个问题。我保证。