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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2011, 00:21   #1
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию Ввод/вывод даты в TextBox

Доброго всем времени суток!
Подскажите пожалуйста как можно в VBA реализовать что бы в TexBox1 вводилась вручную дата форматом dd.mm.yyyy, а в TexBox2 одновременно выводилась дата на 30 дней позже. У меня лично проблема с преобразованием значения с ТексБоска в дату и наоборот. Функция CDate всегда возвращает перекрученую дату mm.dd.yyyy А DateValue не присваивается значению TextBox2. Перепробывал много разных комбинаций с этими функциямно,так что в принципе и нечего выложить в файле.
И можно в догонку пару вопросов касательно VBA? Что делают / и \ в форматах ячейки? И может есть аналогb TextBox для работы с числами и датами?

Последний раз редактировалось Severny; 27.08.2011 в 00:29.
Severny вне форума Ответить с цитированием
Старый 27.08.2011, 00:29   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так пробовали?
textbox2.text = format(cdate(textbox1.text)+30, "dd.mm.yyyy")
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.08.2011, 00:50   #3
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

отже ж...Все работает
Спасибо Игорь. Есть еще нюанс. Выдает ошибку когда я ввожу, допустим дату 31.01.2011, как "31." и "31/" Какой ввод понимает CDate? И тогда как записать дату предыдущих годов?

И хотел еще спросить как правильно писать "dd.mm.yyyy" или "/dd./mm./yyyy"
Severny вне форума Ответить с цитированием
Старый 28.08.2011, 00:38   #4
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

Какая разница между Cdate и DateValue? В даном примере одно работает другое нет.
Severny вне форума Ответить с цитированием
Старый 28.08.2011, 00:42   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

CDate (функция) - преобразование выражения к типу Date
DateValue (функция) - возвращает дату
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.08.2011, 01:00   #6
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

Почему CDate не понимает ввод даты как dd/mm/yyyy или dd.mm.yyyy, а именно надо вводить через черту "-" день и месяц, при этом таким же способом год нельзя добавить. Тоесть год отличный от 2011 в даном случае ввести нельзя.
Severny вне форума Ответить с цитированием
Старый 28.08.2011, 10:37   #7
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Вводить через "." или ",".
1.1 = 01.01.2011
1.1.1 = 01.01.2001
Код:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(Replace(TextBox1.Value, ",", "."), "dd.mm.yyyy")
TextBox2 = Format(CDate(TextBox1.Value) + 30, "dd.mm.yyyy")
[a1] = CDate(TextBox1.Value)
[a2] = CDate(TextBox2.Value)
End Sub
RAN. вне форума Ответить с цитированием
Старый 28.08.2011, 20:09   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А что мешает использованию формы для выбора даты?
Как, например, в этой программе: http://excelvba.ru/programmes/Fill_Invoice
(там код открыт, вам достаточно перетащить в свой файл форму Form_SelectDate и модуль с кодом Date_and_Time)

EducatedFool вне форума Ответить с цитированием
Старый 29.08.2011, 12:58   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от Severny Посмотреть сообщение
Почему CDate не понимает ввод даты как dd/mm/yyyy или dd.mm.yyyy, а именно надо вводить через черту "-" день и месяц, при этом таким же способом год нельзя добавить. Тоесть год отличный от 2011 в даном случае ввести нельзя.
В дополнение ко всему ранее написанному - есть еще функция dateadd, это более универсальная штука.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 29.08.2011, 13:20   #10
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

RAN. Ваш пример немного не подходит, я по событию в TexBox1?вычисляю дату и заношу ее в TexBox2. С кнопкой это реализовать легче. А вот для события Change видать прийдется делать проверку на ввод. В связи с этим меня интересут вопрос почему "5-5" распознается как дата 05.05.2011, а "5.5" или "5,5" уже нет. Что "хавает" Cdate?
Severny вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввод даты в БД MrMorozko PHP 1 30.05.2011 11:27
ввод и вывод текста в textBox SUDALV Windows Forms 15 06.03.2011 16:27
ввод в бд sql через textbox Авторитет Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 1 17.02.2011 18:18
Ввод десятичных дробей в поля textbox формы NikolayGVB Microsoft Office Word 9 26.04.2009 04:55
Как создать маску ввода даты в TextBox? AnnNet Microsoft Office Excel 6 24.07.2008 10:42