|
|
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, подскажите как сделать чтобы в TextBox моно было вводить только пятизначные числовые значения отрицательные и положительные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 13:44 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
segailЗдравствуйте, подскажите как сделать чтобы в TextBox моно было вводить только пятизначные числовые значения отрицательные и положительные. А каким образом можно ввести пятизначное значение СРАЗУ? у вас клавиатура сразу пять знаков выдает? Вы определитесь, либо нужно ограничить ввод цифрами, либо сделать проверку после ввода (например по нажатию кнопки, по нажатию Enter, по потере фокуса и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 13:47 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
IsNumeric - проверяете, число ли потом Val - превращаете в число Abs - убираете знак i>9999 and i<100000 - проверяете диапазон (справедливо для целых чисел, вы не указали, могут ли быть дробные) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 13:54 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Нужно ограничить ввод до пятизначного значения, не зависимо отрицательное или положительное. Например: -12345 12345 При выполнение действия: Private Sub TextBox1_Change() ‘… End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 13:55 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Поставлю вопрос так. Код уже есть. Как разрешить ввод минуса только впереди числового значения. С учетом того что в свойствах указано максимальное количество знаков 5? Private Sub TextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0 MsgBox " //////////////" End If End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 14:09 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Проверяйте SelStart (положение курсора) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 14:25 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
> Автор: Shocker.Pro > Проверяйте SelStart (положение курсора) + ещё нужно перекрывать момент вставки данных из буфера обмена Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 14:39 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос, Я бы вообще не стал обрабатывать KeyPress, а обрабатывал только Change, запоминая предыдущее значение и возвращая его взад при некорректном вводе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 14:41 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.ProИгорь Горбонос, Я бы вообще не стал обрабатывать KeyPress, а обрабатывал только Change, запоминая предыдущее значение и возвращая его взад при некорректном вводе А вот в моих контролах, я вобоще обрабатываю ввод только после его окончания (по нажатию Enter или потере фокуса). Если ввод неправильный, контрол ругается на пользователя и предлагает отредактировать значение или вернуть предыдущее и не дает контролу потерять фокус, пока не сделан корректный ввод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 14:43 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Короче сделал грубо но на форме смотрится Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 16:01 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, в TextBox ввожу цифры 0,2, потом по нажатию CommndButton происходит событие Worksheets("Recept").Cells(tbScet_row, 12).NumberFormat = "0.00" (преобразует ячеку к чиловому формату) Worksheets("Recept").Cells(tbScet_row, 12).Value = tbKolUPak.Text (вводится текст в определенную ячейку) это число вставляется в ячейку с пометкой как текст и при это формат у ячейки остается числовой, если ввести 0.2 т.е. через точку то вставляется нармально = 0,20 необходимо вводить в TextBox число 0,2 или 0,55 и чтобы оно как число записывалось в ячеку как число Неподскажешь в чем проблема ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 13:50 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
valdemar_ru Shocker.Pro, в TextBox ввожу цифры 0,2, потом по нажатию CommndButton происходит событие Worksheets("Recept").Cells(tbScet_row, 12).NumberFormat = "0.00" (преобразует ячеку к чиловому формату) Worksheets("Recept").Cells(tbScet_row, 12).Value = tbKolUPak.Text (вводится текст в определенную ячейку) это число вставляется в ячейку с пометкой как текст и при это формат у ячейки остается числовой, если ввести 0.2 т.е. через точку то вставляется нармально = 0,20 необходимо вводить в TextBox число 0,2 или 0,55 и чтобы оно как число записывалось в ячеку как число Неподскажешь в чем проблема ? Пора писать вторую статью - о том, чтобы не использовали неявные преобразования. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 13:56 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Я дописал функцию Worksheets("Recept").Cells(tbScet_row, 12).Value = CSng (tbKolUPak.Text) но теперь когда вводишь 2.5 или символ форма закрывается и выдает ошибку несоответствие типов. Я так полагаю надо написать проверку, что нужно вводить только цифры и запятую ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 18:27 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
valdemar_ru Shocker.Pro, Я дописал функцию Worksheets("Recept").Cells(tbScet_row, 12).Value = CSng (tbKolUPak.Text) но теперь когда вводишь 2.5 или символ форма закрывается и выдает ошибку несоответствие типов. Я так полагаю надо написать проверку, что нужно вводить только цифры и запятую ? Дело в том, что знак, который будет использоваться в качестве разделителя, зависит от региональных настроек в панели управления. То есть для корректной работы функции от пользователя требуется вводить числа так, как он задал в панели управления. То есть, конечно, самый простой выход - CSng(Replace(tbKolUPak.Text, ".", ",")) Но это работать будет только при установленной запятой в качестве разделителя. Либо проверять IsNumeric и ругаться на пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 19:23 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Большущие Спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 19:30 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
segail, может быть воспользоваться регулярными выражениями ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 22:12 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
нашел код корый проверяет, что бы можно было вводить цифры, пробел и - он работает только на половину т.е. вводишь циры ошибка не выходит вводишь символ на английской расскладке выдает ошибку, но если ввести символ на русской раскладке вывалется по ошибке (Invalid procedure call or argument (Error 5)). Private Sub tbSnils_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim Errors If InStr("0123456789- ", Chr(KeyAscii)) = 0 Then KeyAscii = 0 Errors = MsgBox("1") End If End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2010, 13:52 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Эт лажа.... К тому же никак не защищает от вставки из буфера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2010, 13:59 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Что можете посоветовать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2010, 14:32 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
IsNumeric ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2010, 14:46 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Написал код для проверки: Private Sub tbSnils_Change() If Pr = True Then Pr = False Exit Sub End If Proverka End Sub Private Sub tbSnils_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 8 Or KeyCode = 46 Then Pr = True End If End Sub Sub Proverka() Dim P As Variant For i = 1 To Len(UserForm.tbSnils.Text) P = Mid(UserForm.tbSnils.Text, i, 1) If P < Chr(48) Or P > Chr(57) Then If P < Chr(150) Or P > Chr(150) Then If P < Chr(32) Or P > Chr(32) Then If P < Chr(160) Or P > Chr(160) Then If P < Chr(45) Or P > Chr(45) Then MsgBox ("Вводить можно только цифры и - (шаблон ###-###-### ##)") Exit Sub End If End If End If End If End If Next 'UserForm.tbSnils.SetFocus End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 09:20 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Написал код для проверки: авторPrivate Sub tbSnils_Change() If Pr = True Then Pr = False Exit Sub End If Proverka End Sub Private Sub tbSnils_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 8 Or KeyCode = 46 Then Pr = True End If End Sub Sub Proverka() Dim P As Variant For i = 1 To Len(UserForm.tbSnils.Text) P = Mid(UserForm.tbSnils.Text, i, 1) If P < Chr(48) Or P > Chr(57) Then If P < Chr(150) Or P > Chr(150) Then If P < Chr(32) Or P > Chr(32) Then If P < Chr(160) Or P > Chr(160) Then If P < Chr(45) Or P > Chr(45) Then MsgBox ("Вводить можно только цифры и - (шаблон ###-###-### ##)") Exit Sub End If End If End If End If End If Next End Sub Проверка работает, но елси происходит событие KeyDown и после етого ввести символ или что то скопировать, то ошибка не выходит если не попробовать еще раз. Подскажите как можно поправить или почему так происходит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 09:23 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
во-первых, оформляйте код правильно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. во-вторых. немного поясните смысл возни с Pr - я его не уловил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 09:35 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Pr глобальная переменная которая позволяет отлавливать нажатия KeyCode=8 (BackSpace) и KeyCode=46 (Del) что бы можно было удалять введнный текст и проверка в этот момент не работала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 09:40 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
valdemar_ru Shocker.Pro, Pr глобальная переменная которая позволяет отлавливать нажатия KeyCode=8 (BackSpace) и KeyCode=46 (Del) что бы можно было удалять введнный текст и проверка в этот момент не работала. А что меняет наличие этой проверки? Все равно кроме предупреждения прога у вас ничего не делает, вводить не запрещает, так какая разница, идет проверка после ввода символа или после удаления символа. Я к тому, что если отключить проверку Pr , все работает нормально? Я просто не работал с MSForms, не знаю особенностей возникновения Change ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 09:51 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Да работает, но поле удаление каждого символа выходит сообщение :( т.е. текст= Word после нажатия BackSpace появится сообщение об ошибке и так 4 раза если нажимать BackSpace. Поэтоу решил так написать чтобы можно было спокойно удалять текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 10:23 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Поставьте Debug.Print в оба события, пощелкайте и посмотрите в реальном времени, как они возникают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 10:29 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Может всё же не изобретать велосипед? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 12:09 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
SashaM, Я рад бы ее использовать, MaskEdBox есть в списке компонентов, но когда ее пытаешься добавить в TextBox появляется ошибка "Субъект не имеет доверия для выполнения указанного действия" надо ее зарегистрировать, а я форму хочу использовать не на одном компе + они находятся в разных местах города дык елси 30 -или 80 компов это не вариант поэтому и пытаемся велосипед изобрести :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 13:18 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Компонент можно положить с .exe и зарегистрировать с помощью regsvr32 из shell ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 13:23 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
SashaM, а подробней можете написть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 13:27 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 13:39 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
SashaM, Попробовал не получилось все прописал к реестре как написано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 14:28 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
valdemar_ru SashaM, Я рад бы ее использовать, но когда ее пытаешься добавить в TextBox Это отдельный компонент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 14:45 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
SashaM, Да он самый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 14:46 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
valdemar_ruпоявляется ошибка "Субъект не имеет доверия для выполнения указанного действия" Если это сообщение возникает при попытке поместить контрол на форму VBA, то, возможно, поможет установка кумулятивного обновления VB SP6 Мне помогла. (Где-то нашёл рекомендацию ставить в таком случае именно кумулятивный SP6) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 15:08 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Вот поэтой причине и пытаюсь написать сам проверку или что то похожее на маску. Ибо патом присидать так на каждом компе тоже не вариант. vlth, а VB SP6 просит in order to install Cumulative update For Ms. Visual Basic SP6, you must have Ms. Visual Basic 6.0 Product Installed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 16:49 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
спасибо всем за помощь буду дальше думать как решаит эту проблему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 17:07 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
valdemar_ruспасибо всем за помощь буду дальше думать как решаит эту проблему Ну вообще-то маскированный ввод на текстбоксе решается очень просто. Отрабатывается Change, проверяется текущий текст на соответствие маске. Если он не соответствует маске - возвращается предыдущий текст. И ВСЕ. Это покрывает и любое редактирование и вставку из буфера и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 17:20 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
valdemar_ru vlth, а VB SP6 просит in order to install Cumulative update For Ms. Visual Basic SP6, you must have Ms. Visual Basic 6.0 Product Installed Ну да, логично: надо же что-то обновлять. Я полагал, что VB6 установлен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 18:36 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
vlthНу да, логично: надо же что-то обновлять. Я полагал, что VB6 установлен... Используется MSForms, так что скорее всего - VBA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 18:40 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Shocker.ProvlthНу да, логично: надо же что-то обновлять. Я полагал, что VB6 установлен... Используется MSForms, так что скорее всего - VBA Да, да - речь про VBA Вот аналогичная ситуация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 21:51 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
MaxLength... Вообще, иногда полезно пользоваться свойствами текстбокса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 22:00 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Как известно у компонента есть 2 момента, 1-й это работа в IDE... Попробуй запустить этот код, возможно у тебя заработает msmask32.ocx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2010, 01:46 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Забыл прикрепить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2010, 01:47 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
SashaM, Ваш Project1.exe запускается, а Дальше чего с ним делать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2010, 12:43 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
если автор пытается использовать VB 6 компоненты при разработке под MS Office, то он должен иметь установленный VB на своей машине. После компиляции своего проекта необходимо будет сделать сетап, куда включить все используемые компоненты. На машине , где не установлен VB 6, нельзя использовать в дизайне дополнительные компоненты (OCX) без лицензии. Т.е. на клиентской машине , где только установлен Office, вы не сможете открыть формы со своими контролами в режиме дизайна, но в рантайме они будут прекрасно работать, при условии правильной установки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2010, 12:49 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
Konst_One, т. е. на каждом компе, где я буду использовать форму надо будет установить VB6 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2010, 12:52 |
|
||
|
числовые значения в TextBox
|
|||
|---|---|---|---|
|
#18+
valdemar_ru Konst_One, т. е. на каждом компе, где я буду использовать форму надо будет установить VB6 ? вы опять невнимательно читаете. вы должны будете сделать SETUP, где будут все ваши используемые компоненты. на клиентском компе будете устанавливать вашу програму с помощью него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2010, 12:54 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2159727]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 418ms |

| 0 / 0 |
