Изменить формат времени с 600 на 06:00:00 - PullRequest
0 голосов
/ 23 мая 2019

У меня есть две рабочие книги, A и B, и два листа, 1 и 2, в обеих рабочих книгах. Мне нужно сравнить и найти совпадение по времени. В рабочей книге B на листе 1 у меня есть чч: мм: сс24-часовой формат времени. Но в AI рабочей книги есть время от и до в числовом формате, таком как 600 и 800 и т. Д. Я изменил формат времени в рабочей книге 1 на чч: мм: сс, но проблема, которую я получаю после первого запускавремя изменилось на 06:00:00 и снова во втором прогоне оно изменилось на 00: 00: 00.

    Dim rCell As Range
    Dim iHours As Integer
    Dim iMins As Integer
    Dim lrow As Long
    Dim rn As Range

    lrow = Sot.Range("d" & Rows.Count).End(xlUp).Row
    Sot.Activate
    Set rCell = Sot.Range(Cells(5, 4), Cells(lrow, 5))

    For Each rn In rCell
        If IsNumeric(rn.Value) And Len(rn.Value) > 0 Then
            iHours = rn.Value \ 100
            iMins = rn.Value Mod 100
            rn.Value = (iHours + iMins / 60) / 24
            rn.NumberFormat = "h:mm:ss"
        End If
    Next

    For i = 5 To eRowplan
        Time_from = Sotplan.Range("D" & i).Value
        Time_To = Sotplan.Range("E" & i).Value
        Time_from = TimeSerial(Hour(Time_from), Minute(Time_from), 
        Second(Time_from))
        Time_To = TimeSerial(Hour(Time_To), Minute(Time_To), Second(Time_To))
        If B_Time > "24:00" Then B_Time = "23:59"
        B_Time = TimeSerial(Hour(B_Time), Minute(B_Time), Second(B_Time))

Я пробовал с вышеуказанными кодами

1 Ответ

1 голос
/ 23 мая 2019

Вы можете сделать это со следующим, если вы хотите решение VBA, например, 600 = 600 минут

Dim c

For Each c In Selection
    c.Value2 = c / (24 * 60)
    c.NumberFormat = "hh:mm"
Next c

Или просто используйте = A1 / (24 * 60) и отформатируйте как Time


Обновление после комментариев

Для 600 = 06:00:00 вы можете использовать следующее

Dim c, tmpTime As Variant

For Each c In Selection
    ' Test if number
    If IsNumeric(c.Value2) Then
        ' Split into character array, the Len(c.Value2) limits the size of the array otherwise
        ' an additional empty element is created
        tmpTime = Split(StrConv(c.Value2, vbUnicode), Chr$(0), Len(c.Value2))
        ' Write results back and format
        With c.Offset(0, 1)
            .Value2 = Join(tmpTime, ":")
            .NumberFormat = "hh:mm:ss"
        End With
    End If
Next c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...