Страницы: 1
RSS
Как назначить Tebox в UserForm формат даты и денежный формат
 
Помогите разобраться, как назначить Tebox в UserForm формат даты и денежный формат, ну то есть вводишь в Tebox1 (денежный формат), число и оно в нем делит числа пробелами (12 350,35), я так понимаю знак рубля не сможет отображаться "₽", и оно вводится в ячейку, как во этом примере, где пользователь RAN, предложил перенос из Texbox в ячейку. А с датой чтобы цифры автоматически прописывались через точки (19.01.2020) и переносится в ячейку.
 
Записать в TextBox:
Код
Format(число, "# ### ##0.00")
Format(дата, "dd.mm.yyyy")

Из формы в ячейку - преобразовать текстиз TextBox в число или дату - CDbl,CDate
 
Что-то не понятно как записать в форму. Если делаю так то он выделяет красным
Код
Private Sub TextBox1_Change()
    Format(число, "# ### ##0.00")
End Sub
Изменено: Alex32 - 19.01.2020 02:20:26
 
Это была лишь подсказка, указание направления поиска...
Код
Private Sub UserForm_Activate()
    TextBox1.Text = Format(Cells(3, 1).Value, "# ##0.00")
    TextBox2.Text = Format(Cells(5, 2).Value, "dd.mm.yyyy")
    TextBox3.Text = Format(Cells(7, 1).Value, "# ### ##0.00")
    TextBox4.Text = Format(Cells(9, 2).Value, "dd.mm.yyyy")
End Sub

Private Sub CommandButton1_Click()
    Cells(3, 1).Value = CDbl(TextBox1.Text)
    Cells(5, 2).Value = CDate(TextBox2.Text)
    Cells(7, 1).Value = CDbl(TextBox3.Text)
    Cells(9, 2).Value = CDate(TextBox4.Text)
End Sub

Ячейки уже отформатированы, поэтому при записи на лист задавать формат отображения данных не обязательно.
 
Получается же он при вводе например даты цифры автоматически с точками в Texbox не прописывается. Я же правильно все сделал поместил все в Userform? И при вводе числа тоже без пробелов.
Изменено: Alex32 - 19.01.2020 02:30:52
 
Выше показан вывод значений на форму при ее активации и ввод данных из формы в ячейки после нажатия кнопки.

Здесь - форматирование записанного числа после выхода из TextBox
Код
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1.Text = Format(TextBox1.Text, "# ##0.00")
    Cancel = True
End Sub
 
Понял, спасибо, только надо удалить
Код
    Cancel = True
иначе другие TextBox будут не активны. Получается с датой, все равно самостоятельно нужно вводить точки?
Изменено: Alex32 - 19.01.2020 03:03:33
 
получается так:
сначала нужно придумать и продумать как все должно работать
потом все задуманное реализовать
и будет все работать как задумано (возможно не с первого раза)
каждая дырка в общей логике или в написанном коде вернется неожиданными и непредсказуемыми результатами
особенность программирования в том, что даже если с первого раза не получилось, можно искать и устранять ошибки пока все не начнет работать как нужно, в отличии, например, от хирургии если произошла врачебная ошибка и ампутировали не ту ногу, то ошибку можно исправить со второй попытки (но больше попыток не будет, и первоначально ампутированную ногу уже не вернуть)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ну и?
 
смелее экспериментируйте, вы не рискуете остаться (оставить кого-то) без ног
чем больше и усерднее практиковаться, тем быстрее придут результаты
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Alex32 написал: Получается с датой, все равно самостоятельно нужно вводить точки?
А непонятно, в каком формате Вы собираетесь вводить дату.
 
Сделайте 3 textboxa-a. Для года, месяца и дня месяца. Или поищите в инете решение. Например - вот такое:
(взято с CyberForum.ru)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
vikttur написал:
А непонятно, в каком формате Вы собираетесь вводить дату.
А, это по Вашему, какой формат даты, 19.01.2020?
 
Еслы Вы в таком формате пишете, зачем преобразовывать? Но Вы же спрашивали:
Цитата
Получается с датой, все равно самостоятельно нужно вводить точки?
Вот и возник вопрос: как Вы хотите?
 
Ну чтобы в UserForm в TextBox,  ввел 19 автоматически поставилась точка, ввел 01 автоматически поставилась точка, 2020
 
Цитата
Alex32 написал:
Ну чтобы в UserForm в TextBox,  ввел 19 автоматически поставилась точка, ввел 01 автоматически поставилась
а это не оно, разве?!?!?!  :(
Цитата
Михаил Лебедев написал:
Например - вот такое:(взято с CyberForum.ru)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев да, да спасибо оно,  забыл по благодарить Вас. Сейчас по пробую разобраться чтобы из ячейки в TextBox, вводилось коректно. Просто я назначил в свойстве TextBox, ControlSource для ячейки A3, и когда в вожу в ячейку  дату 19.01.2020, то в TextBox вводится 1/19/2020, и соответственно ошибка не коректны ввод даты
 
Вводите дату при помощи календаря - тогда и проблем с точками не будет.
 
Смысл в том, что с помощью макроса у меня ищет значение в столбце A:A? если находит, то он копирует эти данные в нужные мне ячейки а они в свое время уже должны отображаться в Tebox, подкорректировал и отправил с заменой в ячейки. Поэтому с помощью календаря не подходит.
 
Подозреваю, что вы пытаетесь совместить Me.TextBox1.ControlSource и форматирование в текстбоксе. Тут либо шашечки, либо ехать.
Хотел сделать с дополнительным Textbox' ом, но при передаче значений происходит подмена формата даты на аглицкую локаль, и появляется гемор от головы, и до того места, где он обычно живет.
 
Решил сделать по другому назначил ячейки текстовый формат
Страницы: 1
Наверх