' Проверяем дату и время
ErrIFNS = 1
If DateDiff("d", Mid(s, (Nomsimv) + 43, 10), Format(Date, "dd.mm.yyyy")) < CAObdd Then
If DateDiff("h", Mid(s, (Nomsimv) + 54, 5), Format(Time$, "hh:mm")) < CAObhh Then
If DateDiff("n", Mid(s, (Nomsimv) + 54, 5), Format(Time$, "hh:mm")) < CAObmm Then
ErrIFNS = 0
Else
End If
Else
End If
Else
End If
' Применяем результат
If ErrIFNS = 0 Then
CAObName.BackColor = &H80FF80
CAObBox.BackColor = &H80FF80
CAObData.BackColor = &H80FF80
Else
CAObName.BackColor = &H8080FF
CAObBox.BackColor = &H8080FF
CAObData.BackColor = &H8080FF
End if
kuhtiov писал(а): Else
End If
kuhtiov писал(а):А можно популярнее для особо одаренных?
Денис писал(а):kuhtiov писал(а):А можно популярнее для особо одаренных?
ДЛЯ ОСОБО ОДАРЕННЫХ В СТУДИИ ТЕХНОЛОГИЯ INTELLISENCE ПРИМЕНЯЕТСЯ!
kuhtiov писал(а):Нужно из например 86400 сек. сформировать время: кол-во дней, часов, минут
If IFN01 > 0 Then ' Если в файле настроек кол-во секунд > 0
' Считаем дни
If IFN01 > 86400 Then ' Если кол-во секунд > 1 дня
if01d = Fix(IFN01 / 86400) ' Расчитываем кол-во дней
Else
ifn01d = 0 ' Если кол-во секунд < 1 дня, присваиваем 0 дней
End If
' Считаем часы
If ifn01d > 0 Then ' Если кол-во дней > 0
ifn01h = (Fix(IFN01 / 3600) - ifn01d * 24) ' Считаем кол-во часов - сумма часов дней
Else
ifn01h = Fix(IFN01 / 3600) ' Если кол-во дней = 0, прочто считаем кол-во часов
End If
' Считаем минуты
If ifn01h > 0 Then ' Если кол-во дней > 0
If ifn01d > 0 Then ' Если кол-во минут > 0
ifn01m = Fix(IFN01 / (ifn01d * 24) / (ifn01h * 60))
Else
If ifn01h > 1 Then
ifn01m = Fix((IFN01 / 60) / (ifn01h * 24))
Else
ifn01m = Fix(IFN01 / (60) - 60)
End If
End If
Else
ifn01m = Fix(IFN01 / (60))
End If
Else
ifn01d = 0
End If
kuhtiov писал(а):Дело в том, что это по одной переменной, всего их 19. Описывать такую шнягу для 19 переменных не очень хочется. Длинновато получится. Может подскажите как упростить себе жизнь?
Private Sub IFN_Convert(byval IFN_Sec as long, byref IFN_d, byref IFN_h, byref IFN_m, byref IFN_s)
'Твой код где вместо "01" поставь прочерк "_"
end sub
dim dim dim 'Ну ты понял
IFN01 = 123456789 ' допустим
IFN02 = 12345678
IFN03 = 1234567
...
IFN19 = 12344321
IFN_Convert IFN01, IFN01d, IFN01h, IFN01m, IFN01s
IFN_Convert IFN02, IFN02d, IFN02h, IFN02m, IFN02s
IFN_Convert IFN03, IFN03d, IFN03h, IFN03m, IFN03s
...
IFN_Convert IFN19, IFN19d, IFN19h, IFN19m, IFN19s
private Type IFN
SecFull as Long
Hours as Long
Minutes as Long
Seconds as Long
end Type
kuhtiov писал(а):Ну, вариант А это вообще нормально, что при конвертации из времени в секунды, а потом из секунд во время, у меня получаются разные результаты? Заманался млин уже
If IFN01 > 86400 Then ' Если кол-во секунд > 1 дня
MIT писал(а):В глаза бросается строчкаА если IFN01 = 86400, значит ноль дней?
- Код: Выделить всё
If IFN01 > 86400 Then ' Если кол-во секунд > 1 дня
И аналогично для остального.
kuhtiov писал(а):А есть вообще возможность, сделать что-то вроде этого:
time1 = "11:05:18"
time2 = "12:18:25"
MsgBox time2 - time1
a = TimeValue("11:00:00")
b = TimeValue("11:00:01")
MsgBox DateDiff("s", a, b, vbUseSystemDayOfWeek, vbUseSystem)
Private Function IsLost30Minutes(ByVal StartTime As Time, ByVal EndTime) As Boolean
If Hour(CDate(EndTime - StartTime)) = "0" Then
If Minute(CDate(EndTime - StartTime)) = "30" Then
If Second(CDate(EndTime - StartTime)) = "0" Then IsLost30Minutes = True
End If
End If
End If
End Function
А ничего, что правильный ответ приведен аккурат постом выше?Visual Вова писал(а):Правда, эта функция (не знаю, будет работать или нет) не будет работать, если StartTime > 23:30.
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 21