簡體   English   中英

使用VBA Excel 24小時更改日期和時間

[英]Date and Time Change 24 hours with VBA Excel

如何在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

正如您提到的,您從日期開始,因此我在InputBox中以日期(無時間)開始。

現在,如果您希望僅重復有限的時間,則可以通過限制其適用范圍(在這種情況下為B2:B25)來做到這一點,循環將在到達底部時停止。

現在,它會自動以將來24小時的日期時間填充C列,如果您只希望它具有將來的日期,則跳過C列行中的Timeserial部分。 如果您希望將其設置為將來的1小時,則將行更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM