Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка 13. / 18 сообщений из 18, страница 1 из 1
29.01.2008, 15:23
    #35095027
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Если в программе тип переменной задан Single или Integer, а во время выполнения программы данные, например в TextBox не введены, программа определяет тип переменной String и выдает ошибку 13. Можно ли как-то обмануть прогу, не присваивая переменной тип Variant и не прибегая к обработчику ошибок?

Аналогично с плавающей точкой. Хотя эти типы и так называются, но у меня Single и Double определяются, когда число с запятой. Как быть с типом переменных в этом случае. Либо еще лучше, как сделать, чтобы введенные в этом случае точка, превращалась в запятую.
Константин
...
Рейтинг: 0 / 0
29.01.2008, 15:32
    #35095056
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Val
При введении текста, который нельзя преобразовать в число, возвращает 0.
...
Рейтинг: 0 / 0
29.01.2008, 15:32
    #35095058
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Ипользуеть преобразование типов (CInt, CSng и т.д.).

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

Заодно подумайте, что делать если в TextBox действительно введут текст.
...
Рейтинг: 0 / 0
29.01.2008, 15:39
    #35095076
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
FAndrewПреобразовывайте в KeyPress точку в запятую.

А если Copy/Paste?
...
Рейтинг: 0 / 0
29.01.2008, 15:40
    #35095080
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
AntonariyVal
При введении текста, который нельзя преобразовать в число, возвращает 0. Мне 0 не нужен, мне нужна (в этом случае) пустая ячейка таблицы.
...
Рейтинг: 0 / 0
29.01.2008, 15:41
    #35095085
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
FAndrewИпользуеть преобразование типов (CInt, CSng и т.д.).

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

Заодно подумайте, что делать если в TextBox действительно введут текст..
Спасибо, буду думать и пробовать
...
Рейтинг: 0 / 0
29.01.2008, 15:43
    #35095100
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Option Explicit

Private Sub Command1_Click()
    MsgBox BetterIsNumeric(pstrValue:=Text1.Text, pblnLetNegative:=True, pblnLetDecimals:=True)
End Sub

Public Function BetterIsNumeric(ByVal pstrValue As String, ByVal pblnLetNegative As Boolean, ByVal pblnLetDecimals As Boolean) As Boolean
    Dim blnReturn As Boolean

    If pblnLetNegative Then
            If Left$(pstrValue,  1 ) = "-" Then
                pstrValue = Right$(pstrValue, Len(pstrValue) -  1 )
            End If
    End If

    blnReturn = Not pstrValue Like IIf(pblnLetDecimals, "*[!0-9.]*", "*[!0-9]*")
    
    If blnReturn Then
        blnReturn = IsNumeric(pstrValue)
    End If
    
    BetterIsNumeric = blnReturn
    
End Function
...
Рейтинг: 0 / 0
29.01.2008, 15:47
    #35095111
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
VladConn А если Copy/Paste?. Я об этом думал. Но оно только после вставки числа. Наверно, так лучше, чтобы не получилось, как сказал FAndrew авторесли в TextBox действительно введут текст
...
Рейтинг: 0 / 0
29.01.2008, 15:56
    #35095143
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
VladConn Спасибо!
...
Рейтинг: 0 / 0
29.01.2008, 18:27
    #35095701
Resident
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Может я много пива выпил, но невижу проблемы. Тем более использование API.
Во первых если тип переменной задан как Single или Integer(кароче число), а значение присваевается из TextBox то как я понял у Вас происходит не явное преобразование типов данных что ни есть гуд хотя и можно.
Второе что мешает проверить TextBox на пустую строку, а если строка не пустая проверить функц. IsNumeric не является ли текст числом а дальше все ограничевается только Вашей фантазией

По поводу точки и запятой если данные получины из TextBox то лучше ипользовать функц. Replace для замены точки на запятую и плевать что ввел пользователь. Точку VB воспринимает только в коде.
...
Рейтинг: 0 / 0
29.01.2008, 19:58
    #35095871
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
VladConn
а в vba нет val ?
...
Рейтинг: 0 / 0
29.01.2008, 22:32
    #35096026
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Спасибо, господа! Буду все пробовать. Константин
...
Рейтинг: 0 / 0
29.01.2008, 23:16
    #35096052
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
ResidentМожет я много пива выпил, но невижу проблемы. Тем более использование API.
Во первых если тип переменной задан как Single или Integer(кароче число), а значение присваевается из TextBox то как я понял у Вас происходит не явное преобразование типов данных что ни есть гуд хотя и можно.
Второе что мешает проверить TextBox на пустую строку, а если строка не пустая проверить функц. IsNumeric не является ли текст числом а дальше все ограничевается только Вашей фантазией

По поводу точки и запятой если данные получины из TextBox то лучше ипользовать функц. Replace для замены точки на запятую и плевать что ввел пользователь. Точку VB воспринимает только в коде. Заменять после вставки числа в таблицу?
...
Рейтинг: 0 / 0
29.01.2008, 23:35
    #35096068
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Aklin VladConn
а в vba нет val ?

Aklin, есть, конечно.
Она съедает даже текст, строго говоря, числом не являющийся:
Val(" 1615 198th Street N.E.")

Успехов
...
Рейтинг: 0 / 0
02.02.2008, 00:04
    #35105552
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
ResidentМожет я много пива выпил, но невижу проблемы. Тем более использование API.
Во первых если тип переменной задан как Single или Integer(кароче число), а значение присваевается из TextBox то как я понял у Вас происходит не явное преобразование типов данных что ни есть гуд хотя и можно.
Второе что мешает проверить TextBox на пустую строку, а если строка не пустая проверить функц. IsNumeric не является ли текст числом а дальше все ограничевается только Вашей фантазией

По поводу точки и запятой если данные получины из TextBox то лучше ипользовать функц. Replace для замены точки на запятую и плевать что ввел пользователь. Точку VB воспринимает только в коде.

Спасибо всем!
На одном из форумов мне предложили вариант, который, с небольшой поправкой хорошо выполнил задачу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    If Len(txt1.Text) =  0  Then
     a =  0 
   Else
   If InStr( 1 , txt1.Text, ".") >  0  Then
     a = Replace(txt1.Text, ".", ",",  1 ,  1 )
   Else
     a = txt1.Text
   End If
   End If
...
Рейтинг: 0 / 0
04.02.2008, 15:58
    #35108686
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Вопрос этой темы решен но, FAndrewчто делать если в TextBox действительно введут текст.
Что-то не могу придумать, если в TextBox введут текст
...
Рейтинг: 0 / 0
05.02.2008, 10:17
    #35109890
FAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Самое простое не давайте вводить текст. И плюс проверка на чилсо при выходе. Не число - месадж и обратно в поле. Пока не введет число или очистит.
...
Рейтинг: 0 / 0
07.02.2008, 10:31
    #35115925
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка 13.
Все нашел! Константин
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка 13. / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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