Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 12:40   #1
НеВа6464
Пользователь
 
Регистрация: 16.05.2009
Сообщений: 64
По умолчанию Работа с датой

Здравствуйте!
Необходимо изменить дату в ячейке ровно на один месяц вперёд.
Например, было в ячейке 12.01.14, должно стать 12.02.14.
Поскольку ячейка с датой постоянно сдвигается, то эта ячейка поименована.
Типа вот так - "Дата_больше"
Как программно можно изменить эту вот "Дата_больше" на один месяц вперёд?
Что будет, если месяц был 12 (декабрь)? Измениться ли он на январь, но уже следующего года?
НеВа6464 вне форума Ответить с цитированием
Старый 22.05.2014, 12:55   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Как программно можно изменить эту вот "Дата_больше" на один месяц вперёд?
Ваш вопрос как бы содержит ответ - необходимо добавить 1 месяц к предыдущей дате.
date2 = date(year(data1), month(date1)+1, day(date1))
один нюанс - при date1 = 31.01.2014 date2 по этой формуле станет равно 03.03.2014
Цитата:
если месяц был 12 (декабрь)? Измениться ли он на январь, но уже следующего года?
изменится
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.05.2014, 13:09   #3
НеВа6464
Пользователь
 
Регистрация: 16.05.2009
Сообщений: 64
По умолчанию

Спасибо.
Ща попробую.
НеВа6464 вне форума Ответить с цитированием
Старый 22.05.2014, 13:18   #4
НеВа6464
Пользователь
 
Регистрация: 16.05.2009
Сообщений: 64
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
date2 = date(year(data1), month(date1)+1, day(date1))
Эксел пишет, что тут синтаксическая ошибка
НеВа6464 вне форума Ответить с цитированием
Старый 22.05.2014, 13:36   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а так:
date2 = DateSerial(Year(date1), Month(date1) + 1, Day(date1))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.05.2014, 13:38   #6
НеВа6464
Пользователь
 
Регистрация: 16.05.2009
Сообщений: 64
По умолчанию

да я тут в книжке вот что нашёл:
Код:
date1 = Range("Дата_больше")
Range("Дата_больше") = DateAdd("m", 1, date1)
И это работает.
НеВа6464 вне форума Ответить с цитированием
Старый 22.05.2014, 13:52   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

поздравляю! сразу бы так
Range("Дата_больше") = DateAdd("m", 1, Range("Дата_больше"))
если "Дата_больше" на входе была 31.01.2014 то на выходе будет 28.02.2014
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.05.2014, 14:00   #8
НеВа6464
Пользователь
 
Регистрация: 16.05.2009
Сообщений: 64
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
если "Дата_больше" на входе была 31.01.2014 то на выходе будет 28.02.2014
И это правильно, на самом деле.
Точно также 31.05, например, превращается в 30.06
Гы, 30.5 тоже в 30.6 превращается
НеВа6464 вне форума Ответить с цитированием
Старый 22.05.2014, 14:12   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

с датами до 28 числа месяца - без проблем, после 28 надо понимать, что должно быть в итоге... потому что после 28.02.2014 + месяц будет 28.03, 28.04... с 31-го уже спрыгнули.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с датой Linochka Компоненты Delphi 1 16.05.2011 11:44
Работа с датой Golovastik PHP 5 07.07.2010 00:25
Работа с датой EugeneIsmatulin Общие вопросы Delphi 8 16.06.2009 13:24
работа с датой Sack Microsoft Office Access 2 23.09.2008 09:56
Работа с датой Dunpeal Общие вопросы Delphi 5 15.05.2008 12:05