1

作成済みのこのマクロに 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 時間単位で増分する時間が必要です。

ここに画像の説明を入力

4

1 に答える 1

1

まず、常に 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)。ループは一番下に到達すると停止します。

C 列に 24 時間後の日時が自動的に入力されるようになりました。将来の日付が必要な場合は、C 列の行の Timeserial 部分をスキップします。これを 1 時間先にしたい場合は、行を次のように変更します。

b.Offset(0, 1).Value2 = dtDate + TimeSerial(intHours +1, 0, 0)
于 2012-10-31T14:41:43.347 に答える