Типы переменных.

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
kminas
Сообщения: 108
Зарегистрирован: 06 янв 2006, 00:06
Откуда: Ростов-на-Дону

Если в программе тип переменной задан As Single или As Integer, а во время выполнения программы данные, например в TextBox не введены, программа определяет тип переменной As String и выдает ошибку 13. Можно ли как-то обмануть прогу, не присваивая переменной тип Variant и не прибегая к обработчику ошибок?

Аналогично с плавающей точкой. Хотя эти типы и так называются, но у меня Single и Double определяются, когда число с запятой. Как быть с типом переменных в этом случае. Либо еще лучше, как сделать, чтобы введенные в этом случае точка превращалась в запятую
Pavel55
Сообщения: 418
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

1)

Код: Выделить всё

If Not IsNumeric(Me.TextBox1) Then
        MsgBox "Введите число!", vbExclamation, "Ошибка"
    End If
2)

Код: Выделить всё

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Sub
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте kminas.
в дополнение к ответу Pavel55

Код: Выделить всё

Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 46
            KeyAscii = 44
        Case 48 To 57
        Case Else
            KeyAscii = 0
    End Select
End Sub
Евгений.
son
Сообщения: 18
Зарегистрирован: 21 янв 2008, 10:17

&quot писал(а):Либо еще лучше, как сделать, чтобы введенные в этом случае точка превращалась в запятую
можно так:
str = Replace(cStr(number), ",", ".")
number = cDbl(str)
kminas
Сообщения: 108
Зарегистрирован: 06 янв 2006, 00:06
Откуда: Ростов-на-Дону

Спасибо всем!
На одном из форумов мне предложили вариант, который, с небольшой поправкой хорошо выполнил задачу

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
Ответить