Подскажите пож-та как определить порядковый день года?

Программирование на Visual Basic for Applications
MagicMan
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 18.11.2004 (Чт) 11:03

Подскажите пож-та как определить порядковый день года?

Сообщение MagicMan » 24.10.2005 (Пн) 14:37

Подскажите пож-та как определить порядковый день года?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.10.2005 (Пн) 14:40

d - dateserial(year(d),1,1) + 1
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

MagicMan
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 18.11.2004 (Чт) 11:03

СПАСИБА!

Сообщение MagicMan » 24.10.2005 (Пн) 16:01

СПАСИБА!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 25.10.2005 (Вт) 9:52

GSerg писал(а):d - dateserial(year(d),1,1) + 1


Или

Код: Выделить всё
Format$(Date,"y")
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.10.2005 (Вт) 10:05

Еще можно через DateDiff, до кучи. Хотя самый лучший способ - способ Andrey Fedorov.

Кстати, GSerg, твой метод выдаст нецелое число, если d у тебя нецелое (например, если сделать d=Now()).
Быть... или не быть. Вот. В чём вопрос?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.10.2005 (Вт) 10:15

Нет, самый лучший способ -- от текущей даты отнять дату первого дня года и прибавить один. Дробность никак не мешает, в крайнем случае можно сделать Fix(d).
А Format$() надо еще переводить в число.
Lasciate ogni speranza, voi ch'entrate.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.10.2005 (Вт) 10:23

Ладно, на любителя. :)
Я обычно за самый короткий код. Тут получается так:

DateDiff('d',d,dateserial(year(d),1,1) + 1

Fix(d) - dateserial(year(d),1,1) + 1

CInt(Format$(d, "y"))

:D
Быть... или не быть. Вот. В чём вопрос?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.10.2005 (Вт) 11:01

Самый короткий?
Ты знаешь, во что раскладывается Format$() при компиляции?
Lasciate ogni speranza, voi ch'entrate.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.10.2005 (Вт) 11:49

Ага. И это прекрасно иллюстрирует принцип "на любителя" - поскольку я не пишу ни коммерческих программ, ни даже программ, которыми будут пользоваться много пользователей, мне проще написать программу с более коротким кодом на VB и более длинным машинным кодом, чем наоборот. :) Именно это я и имел в виду.
Быть... или не быть. Вот. В чём вопрос?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 25.10.2005 (Вт) 12:42

alibek писал(а):Самый короткий?
Ты знаешь, во что раскладывается Format$() при компиляции?


А ты что, в цикле это вычисляешь? Интересно зачем?

Если нужно в Grid-е показать день от начала года, то в нормальном Grid-e должно быть свойство форматирования в котором достаточно указать тое-же символ y. Аналогично и в отчете. В остальных случаях вызов данной функции более одного раза практически никогда и не требуется - разницы в скорости и специально замерить не сможешь.

Так что краткость в данном случае лучше...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

    TopList