2012-10-31 266 views
1

如何在24小時內爲此宏添加時間我已經創建了?下面是宏。我需要給它添加一個時間戳,我不知道如何。使用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小時內增加。

enter image description here

+0

'我需要添加一個時間戳it' - 什麼?工作表中的單元格?你想要宏觀時間嗎? –

+0

@ scott到工作表中的單元格。謝謝。 – TankTank

回答

1

首先,我建議始終使用顯式的選項。這可以通過您的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) 
+0

是的,我的工作。我找到了你。謝謝您的幫助。 – TankTank

+0

歡迎您 –

+0

我希望它保持範圍B和偏移量+ 1的當前日期與外出循環保持相同的日期。如果這有道理? – TankTank

相關問題