Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

формат ячейки чч:мм:сс

9.0K
19 декабря 2006 года
j_anna
45 / / 10.07.2006
формат ячейки чч:мм:сс выводит 24:30 как 00:30:00,
как сделать,чтобы выводилось 24:30:00?
А то при сравнении дат условие не выполняется:
If CDate(.Cells(s, 3).text) >= CDate("16:30:00") Then
....
267
19 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: j_anna
формат ячейки чч:мм:сс выводит 24:30 как 00: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

9.0K
19 декабря 2006 года
j_anna
45 / / 10.07.2006
у меня формат [чч]:мм:сс показывает всё равно 00:30:00

а If .Cells(s, 3).Value >= TimeSerial(16, 30, 0) Then сравнивает 2,08>=16:30:00
267
19 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Что-то Вы такое странное рассказываете...
Если сделать в Экселе у ячейки формат [чч]:мм:сс, а потом ввести туда 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 взялось... Что-то у Вас не так...

9.0K
19 декабря 2006 года
j_anna
45 / / 10.07.2006
вот именно, что ввести туда 24:30, а так как ячека со временем заполняется по данным из SQL-запроса, то вручную нужно 00:30:00 менять на 24:00:00,
 
Код:
.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

а дальше сранивать любым способом, например If TimeValue(.Cells(s, 3).text) >= TimeValue("16:30:00") Then
всё получается, за исключением 24:30, 25:30 часов в ячейке со временем, но это допустимо...или можно пройтись обратно в 00:30,01:30 переделать
267
19 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Ага! Копнёшь поглубже, так и SQL-запрос появляется. Вы уж сами рассказывайте про всё, а то я же не могу про это догадаться.

Давайте попробуем принимать у запроса текст, а потом с ним сами разбираться. Отформатируйте ячейку как текст (.NumberFormat = "@"), и посмотрите, что получится. Если всё пойдёт по плану, сравнивать надо будет CDate(.Value) и TimeSerial()
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог