Private Sub UserForm_Initialize() Dim D1 As Date, D2 As Date D1 = [a1]: D2 = [b1] 'TextBox1 = D1: TextBox2 = D2 TextBox1 = Format(D1, "dd/mm/yyyy"): TextBox2 = Format(D2, "dd/mm/yyyy") End Sub
[/vba]Почему так - понятно?
Здравствуйте Так надо: [vba]
Код
Private Sub UserForm_Initialize() Dim D1 As Date, D2 As Date D1 = [a1]: D2 = [b1] 'TextBox1 = D1: TextBox2 = D2 TextBox1 = Format(D1, "dd/mm/yyyy"): TextBox2 = Format(D2, "dd/mm/yyyy") End Sub
Прошу прощения. Остался без интернета на пару дней. Serge_007, спасибо за ответ. Получается, что невозможно изменить формат в уже заполненном TextBox. Или я чего-то не понял.
Прошу прощения. Остался без интернета на пару дней. Serge_007, спасибо за ответ. Получается, что невозможно изменить формат в уже заполненном TextBox. Или я чего-то не понял.Dмитрий
Именно. Для того, чтобы TextBox1 получил формат "dd/mm/yyyy", нужно выполнить макрос. Сам по себе макрос не запустится, его нужно запустить. [vba]
Код
Private Sub UserForm_Initialize() Dim D1 As Date, D2 As Date D1 = [a1]: D2 = [b1] TextBox1 = D1: TextBox2 = D2 TextBox1 = Format(TextBox1 , "dd/mm/yyyy"): TextBox2 = Format(TextBox2 , "dd/mm/yyyy") End Sub
[/vba] Код выдает правильный результат, но только однократно, при загрузке формы. Если вручную сменить значение в TextBox1, необходимо снова запустить форматирование. [vba]
Код
Private Sub TextBox1_Exit() TextBox1 = Format(TextBox1 , "dd/mm/yyyy") End Sub
Именно. Для того, чтобы TextBox1 получил формат "dd/mm/yyyy", нужно выполнить макрос. Сам по себе макрос не запустится, его нужно запустить. [vba]
Код
Private Sub UserForm_Initialize() Dim D1 As Date, D2 As Date D1 = [a1]: D2 = [b1] TextBox1 = D1: TextBox2 = D2 TextBox1 = Format(TextBox1 , "dd/mm/yyyy"): TextBox2 = Format(TextBox2 , "dd/mm/yyyy") End Sub
[/vba] Код выдает правильный результат, но только однократно, при загрузке формы. Если вручную сменить значение в TextBox1, необходимо снова запустить форматирование. [vba]
Код
Private Sub TextBox1_Exit() TextBox1 = Format(TextBox1 , "dd/mm/yyyy") End Sub
Сам по себе макрос не запустится, его нужно запустить.
Ну так мы его и запускаем Private Sub UserForm_Activate() 1. Присваеваем TextBox1 = D1: TextBox2 = D2 2. Форматируем TextBox1 = Format(TextBox1, "dd/mm/yyyy"): TextBox2 = Format(TextBox2, "dd/mm/yyyy") 3. Результат: TextBox1 - 08.05.2014; TextBox2 - 22.08.2014; вместо 05.08.2014 и 22.08.2014 соответственно Речь не идет о дальнейшей смене каких то значений в TextBox. Я набросал всего лишь пример с форматированием однократно, при активации формы
Сам по себе макрос не запустится, его нужно запустить.
Ну так мы его и запускаем Private Sub UserForm_Activate() 1. Присваеваем TextBox1 = D1: TextBox2 = D2 2. Форматируем TextBox1 = Format(TextBox1, "dd/mm/yyyy"): TextBox2 = Format(TextBox2, "dd/mm/yyyy") 3. Результат: TextBox1 - 08.05.2014; TextBox2 - 22.08.2014; вместо 05.08.2014 и 22.08.2014 соответственно Речь не идет о дальнейшей смене каких то значений в TextBox. Я набросал всего лишь пример с форматированием однократно, при активации формыDмитрий
[/vba] по умолчанию отображает дату в формате "mm/dd/yyyy" Дальше этот текст преобразовывается текст в формате "dd/mm/yyyy". А VBA, бедолага, не знает 08.05 это 8 мая или 5 августа. Но точно знает, что месяцев году всего 12
Понятно. TextBox - это всегда текст. [vba]
Код
TextBox1 = D1
[/vba] по умолчанию отображает дату в формате "mm/dd/yyyy" Дальше этот текст преобразовывается текст в формате "dd/mm/yyyy". А VBA, бедолага, не знает 08.05 это 8 мая или 5 августа. Но точно знает, что месяцев году всего 12 RAN