.Cells(i, 3).NumberFormat = "[hh]:mm:ss"
.Cells(i, 3).Value = время из SQL-запроса
If Mid(.Cells(i, 3).text, 1, 1) = "0" And Mid(.Cells(i, 3).text, 2, 1) < 6 Then
.Cells(i, 3).Value = CStr(24 + Mid(.Cells(i, 3).text, 2, 1)) & Mid(.Cells(i, 3).text, 3)
End If
формат ячейки чч:мм:сс
как сделать,чтобы выводилось 24:30:00?
А то при сравнении дат условие не выполняется:
If CDate(.Cells(s, 3).text) >= CDate("16:30:00") Then
....
Цитата: j_anna
формат ячейки чч:мм:сс выводит 24:30 как 00:30:00,
как сделать,чтобы выводилось 24:30:00?
как сделать,чтобы выводилось 24:30:00?
Конкретно эта вещь делается форматом [чч]:мм:сс
Цитата:
А то при сравнении дат условие не выполняется:
If CDate(.Cells(s, 3).text) >= CDate("16:30:00") Then
....
Но как мы видим, дело не совсем в формате.
Я думаю, было бы лучше писать эту строчку так:
If .Cells(s, 3).Value >= TimeSerial(16,30,00) Then
а If .Cells(s, 3).Value >= TimeSerial(16, 30, 0) Then сравнивает 2,08>=16:30:00
Если сделать в Экселе у ячейки формат [чч]:мм:сс, а потом ввести туда 24:30, то результат будет выглядеть как 24:30:00, клянусь Яндексом.
Что касается
Цитата:
а If .Cells(s, 3).Value >= TimeSerial(16, 30, 0) Then сравнивает 2,08>=16:30:00
то у меня есть вопросы как по правой, так и по левой части.
TimeSerial(16, 30, 0) - это ЧИСЛО в формате Date, Эксель будет обращаться с ним как с числом (0.6875 если перевести в обычные числа). А про левую часть вообще ни фига не понятно, откуда 2.08 взялось... Что-то у Вас не так...
Код:
а дальше сранивать любым способом, например If TimeValue(.Cells(s, 3).text) >= TimeValue("16:30:00") Then
всё получается, за исключением 24:30, 25:30 часов в ячейке со временем, но это допустимо...или можно пройтись обратно в 00:30,01:30 переделать
Давайте попробуем принимать у запроса текст, а потом с ним сами разбираться. Отформатируйте ячейку как текст (.NumberFormat = "@"), и посмотрите, что получится. Если всё пойдёт по плану, сравнивать надо будет CDate(.Value) и TimeSerial()