Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 14

Программа вылетает при вводе в поле некорректных символов

18.07.2011, 18:52. Показов 2991. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Грубо говоря, программа состоит из трех текст боксов в которые вводятся числа и кнопки которая подставляет их в формулу и выводит результат в метку, если ввести в текстбокс что нибудь другое программа вылетает, как объяснить ей что нужно не воспринимать "левые" символы? PS: сорри за ламерский вопрос.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.07.2011, 18:52
Ответы с готовыми решениями:

Программа зацикливается при вводе некорректных данных
Доброго дня. Уже искал по форуму, нашел много похожих тем, но предложенные там решения, в основном, не срабатывают. А код, предлагаемый...

Программа решает слау методом Гаусса: показывать ошибку при вводе некорректных данных
Программа решает слау методом гауса, привводе несовместимой системы или системе без решений вместо сообшения о несовместимости или...

При вводе букв программа вылетает
Всем привет. Помогите пожалуйста исправить программу. Нужно сделать чтобы при выборе действия принимались только числа, а при вводе букв...

12
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,325
18.07.2011, 19:19
в тестбоксе пишите процедуру Change
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
18.07.2011, 19:35
Мои вариант, запрещающий вводить пробел:
Visual Basic
1
2
3
4
5
6
7
Private Sub TextBox1_Change()
'Chr(32) - это код пробела в ASCII.
If Right(Me.TextBox1.Text, 1) = Chr(32) Then
    MsgBox "Пробелы вводить нельзя", vbCritical
    Me.TextBox1.Text = Left(Me.TextBox1.Text, Len(Me.TextBox1.Text) - 1)
End If
End Sub
Чтобы узнать коды ASCII используйте этот код:
Visual Basic
1
2
3
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
MsgBox KeyCode
End Sub
1
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 14
18.07.2011, 19:48
А можно ли просто запретить вводить все символы кроме чисел?
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,325
18.07.2011, 19:51
If .... Like "*[1234567890]*" = False Then
писал по памяти
проверяйте
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
18.07.2011, 20:09
Я свой вариант предложу: цифры в ASCII имеют коды от 48 до 57, опираясь на это, у меня написан код:
Код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub TextBox1_Change()
'После того, как произошла отмена ввода запрещённого
'символа, снова срабатывает событие Change,
'если в текстовом поле ничего нет, то будет ошибка,
'поэтому нужно произвести проверку, есть ли символы
'в текстовом поле.
If Len(Me.TextBox1.Text) = 0 Then
    Exit Sub
End If
If Asc(Right(Me.TextBox1.Text, 1)) < 48 Or Asc(Right(Me.TextBox1.Text, 1)) > 57 Then
    MsgBox "Можно вводить только цифры", vbCritical
    Me.TextBox1.Text = Left(Me.TextBox1.Text, Len(Me.TextBox1.Text) - 1)
End If
End Sub
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,325
18.07.2011, 20:22
Цитата Сообщение от Busine2009 Посмотреть сообщение
Len(Me.TextBox1.Text) = 0
раньше же Вы писали
если ... = ""
а тут поворот
9 строчку выбросить
в 10 й дописать Еlse
ну кому как нравится
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
18.07.2011, 20:24
Ципихович Эндрю,
а что не так, я просто не понимаю.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,325
18.07.2011, 20:27
это я Вас спрашиваю Вы раньше писали
если ... = ""
А теперь через длину, Лен меряете
почему изменили??
Всё так
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
18.07.2011, 20:32
Ципихович Эндрю,
первый раз я когда тестировал код, не вводил первым пробел и ошибки не возникало.
А второй раз, когда стал тестировать, то ввёл запрещённый символ первым и возникла ошибка.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,325
18.07.2011, 20:33
ну надо не забывать добавлять Trim
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
18.07.2011, 20:34
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ну надо не забывать добавлять Trim
пробелы не будут введены - это запрещённый знак.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
18.07.2011, 21:39
от руки /возможно не раб/
Visual Basic
1
2
3
4
5
6
7
8
TextBox1.Text = Replace(TextBox1.Text, ".", ",")
TextBox2.Text = Replace(TextBox2.Text, ".", ",")
If IsNumeric(TextBox1.Text) And _
IsNumeric(TextBox2.Text) Then
Label1 = CDbl(TextBox1.Text) + CDbl(TextBox2.Text)
Else
Label1 = "Error"
End If
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.07.2011, 21:39
Помогаю со студенческими работами здесь

Программа вылетает при вводе значений
вроде прохожу си второй год и проги писал гораздо сложней, а тут реально туплю... #include&lt;stdio.h&gt; #include&lt;conio.h&gt; ...

Вылетает программа при вводе чисел
Вообщем, в программе реализуется метод Лобачевского.. Она нормально запускается, но когда вводишь числа в консоли, она вылетает... ...

Вылетает программа при вводе любого слова
Написал вот калькулятор. Вылетает при вводе любого слова, пусть даже символа, при введении операции. Ни про какие ошибки не говорит. Фиг...

Вылетает программа при вводе boolean через scanf
Вылетает программа при вводе boolean через scanf #include &lt;bits/stdc++.h&gt; #include&lt;windows.h&gt; using namespace std; struct...

Обработка исключений при вводе некорректных данных
День добрый, начал разбираться с исключениями, пока не совсем понимаю в чем их удобство и зачем они нужны, какие преимущества и т.д... но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru