1

VBAで何らかのカレンダーを作成する必要があります。時間の列を作成する必要があります。隣接する 2 つのセル間の時間差は、テキスト ファイルから読み取った整数によって決定されます。これは、分単位の時間分解能を表します。

たとえば、Res = 60 の場合、時間列は次のようになります。

12:00
13:00
14:00
 ...

Res = 30 の場合、時間列は次のようになります。

12:00
12:30
13:00
13:30
14:00
 ....

与えられた結果に従ってセルの数を計算しました (Res = 60 の場合、nCells = 24、Res = 30 の場合、nCells = 48 など)。時間列を作成する方法がわかりません(もちろんVBAコードで)。

ありがとう、リー

4

4 に答える 4

1
Public Sub MakeTime(RangeA As Range, iRes As Long)
Dim dDate As Date
Dim rCell As Range
Dim X As Variant
Set rCell = RangeA
dDate = CDate(RangeA.Value)
Do
    dDate = DateAdd("n", iRes, dDate)
    Set rCell = rCell.Offset(1, 0)
    rCell.Value = dDate
Loop Until DateDiff("h", CDate(RangeA.Value), dDate) >= 24
End Sub

Sub test()
Call MakeTime(Sheet1.Range("A1"), 45)
End Sub

彼らは私を打ち負かしました...しかし、私はすでにルーチンを書いているので...投稿することもできます:)

于 2013-10-22T07:31:54.793 に答える
1

これを新しいワークブックで試してください

Sub Main()

    ' ask for column input
    Dim myColumn As String
    myColumn = InputBox("Please enter the column letter where the hours will be stored")

        ' Clear the column
        Columns(myColumn & ":" & myColumn).ClearContents

    ' initial hour
    Dim firstHour As String
    firstHour = InputBox("Please enter the start time in the hh:mm format i.e. 12:00")

    ' interval
    Dim interval As Long
    interval = CLng(InputBox("Please enter the interval in minutes"))

    ' duration
    Dim duration As Long
    duration = CLng(InputBox("Please enter the duration (hrs)"))

    ' apply formatting to column
    Columns(myColumn & ":" & myColumn).NumberFormat = "hh:mm;@"

    ' enter the initial time into cell
    Range(myColumn & 1) = CDate(firstHour)

    ' fill in remaining hours / interval
    Dim i As Long
    For i = 1 To (60 / interval) * duration
        Range(myColumn & 1).Offset(i, 0) = DateAdd("n", interval, CDate(Range(myColumn & 1).Offset(i - 1, 0)))
    Next i

End Sub
于 2013-10-22T07:31:58.143 に答える
1

DateAdd を使用して日付をインクリメントできます: http://www.techonthenet.com/excel/formulas/dateadd.php

Sub createTimeColumn()

intIncr = 60                                    'minutes to add each cell
intCellCnt = 1440 / intIncr                     '24h * 60m = 1440 minutes per day
datDate = CDate("01/11/2013 06:00:00")          'start date+time for first cell

For i = 1 To intCellCnt                         'loop through n cells
    Cells(i, 1) = Format(datDate, "hh:mm")      'write and format result
    datDate = DateAdd("n", intIncr, datDate)    'add increment value
Next i

End Sub

結果は次のようになります

ここに画像の説明を入力

于 2013-10-22T07:27:21.743 に答える