powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Textbox параметры ввода
7 сообщений из 32, страница 2 из 2
Textbox параметры ввода
    #36533531
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, прежде чем продолжать, категорически рекомендую почитать про типы данных VBA, а то у вас каша. И еще лучше использовать опцию Option Explicit, объявить все переменные и не допускать неявных преобразований.

e = Val(TextBox2.Value)

Val возвращает подходящий числовой тип. Если у вас не определена переменная e, она получает этот тип.

e = False

здесь вы сравниваете числовой тип с булевым. Булево значение будет неявно преобразовано в числовое (конкретно - в 0), то есть вы сравниваете ваше значение с нулем.

TextBox2.Value <> ""

единственное корректное сравнение

TextBox2.Value <> 0

Value имеет текстовый тип, 0 - числовой. Скорее всего Value будет пытаться быть преобразовано в число, чтобы можно было сравнить с нулем. Если там будут какие-то посторонние буквы возникнет ошибка. Или 0 будет пытаться быть преобразован в "0" (текстовый тип) для сравнения. То есть точного понимания, как пройдет неявное преобразование - нет.

TextBox2.Value = ""

любая опечатка и человек вынужден вводить все заново, прям сапер :-/

от одиночных запятых данная конструкция защищает

мне казалось, что выхотели защиту от двойных запятых.
...
Рейтинг: 0 / 0
Textbox параметры ввода
    #36533535
dezmontino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

проблема в том что системным разделителем у меня является запятая а не точка, поэтому я пытаюсь с false, может я чего не понимаю просто...
...
Рейтинг: 0 / 0
Textbox параметры ввода
    #36533539
dezmontino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProА вообще, прежде чем продолжать, категорически рекомендую почитать про типы данных VBA, а то у вас каша. И еще лучше использовать опцию Option Explicit, объявить все переменные и не допускать неявных преобразований.

e = Val(TextBox2.Value)

Val возвращает подходящий числовой тип. Если у вас не определена переменная e, она получает этот тип.

e = False

здесь вы сравниваете числовой тип с булевым. Булево значение будет неявно преобразовано в числовое (конкретно - в 0), то есть вы сравниваете ваше значение с нулем.

TextBox2.Value <> ""

единственное корректное сравнение

TextBox2.Value <> 0

Value имеет текстовый тип, 0 - числовой. Скорее всего Value будет пытаться быть преобразовано в число, чтобы можно было сравнить с нулем. Если там будут какие-то посторонние буквы возникнет ошибка. Или 0 будет пытаться быть преобразован в "0" (текстовый тип) для сравнения. То есть точного понимания, как пройдет неявное преобразование - нет.

TextBox2.Value = ""

любая опечатка и человек вынужден вводить все заново, прям сапер :-/

от одиночных запятых данная конструкция защищает

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

защиту от двойных и далее я сделал, а вот защита от простых нужна например в случае ввода только запятой или ,4 к примеру.
...
Рейтинг: 0 / 0
Textbox параметры ввода
    #36533560
dezmontino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в принципе такой ввод можно обойти, если задать положение "," в textBox начиная со 2-го символа текстовой строки. только как это записать?
...
Рейтинг: 0 / 0
Textbox параметры ввода
    #36533577
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dezmontinoзащиту от двойных и далее я сделал, а вот защита от простых нужна например в случае ввода только запятой или ,4 к примеру.
в принципе такой ввод можно обойти, если задать положение "," в textBox начиная со 2-го символа текстовой строки.
dezmontino, внимательно изучите следующие строки. Выводы, думаю, очевидны?
Код: plaintext
1.
2.
x = IsNumeric(",") 'x=false
y = IsNumeric(",4") 'y=true
z = CDbl(",4") 'z= 0 , 4 
...
Рейтинг: 0 / 0
Textbox параметры ввода
    #36533583
dezmontino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlthdezmontinoзащиту от двойных и далее я сделал, а вот защита от простых нужна например в случае ввода только запятой или ,4 к примеру.
в принципе такой ввод можно обойти, если задать положение "," в textBox начиная со 2-го символа текстовой строки.
dezmontino, внимательно изучите следующие строки. Выводы, думаю, очевидны?
Код: plaintext
1.
2.
x = IsNumeric(",") 'x=false
y = IsNumeric(",4") 'y=true
z = CDbl(",4") 'z= 0 , 4 


спасибо помогло

вот что получилось
e = IsNumeric(TextBox2.Value)
If (e = False) And (TextBox2.Value <> "") Then
MsgBox "некорректный ввод", vbExclamation, "Внимание"
TextBox2.Text = ""
TextBox2.SetFocus
End If
...
Рейтинг: 0 / 0
Textbox параметры ввода
    #36533594
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dezmontino, вот так оно будет приличнее смотреться:
Код: plaintext
1.
2.
3.
4.
5.
6.
With TextBox2
    If Not IsNumeric(.Text) Then
        MsgBox "некорректный ввод", vbExclamation, "Внимание"
        .Text = ""
        .SetFocus
    End If
End With
(x=IsNumeric("") 'x=false)
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Textbox параметры ввода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]