Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 27.08.2011, 00:21   #1
Severny
Форумчанин
 
Регистрация: 07.10.2010
Адрес: Киев
Сообщений: 144
Репутация: 10
По умолчанию Ввод/вывод даты в 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,133
Репутация: 1796

icq: 7934250
skype: i2x0,5
По умолчанию

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

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

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

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

skype: d_ober1
По умолчанию

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

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

Вводить через "." или ",".
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,829
Репутация: 1220

skype: ExcelVBA.ru
По умолчанию

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

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

icq: 4190413
skype: pilipnik
По умолчанию

Цитата:
Сообщение от 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
Репутация: 10
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


09:52.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru