Если в программе тип переменной задан As Single или As Integer, а во время выполнения программы данные, например в TextBox не введены, программа определяет тип переменной As String и выдает ошибку 13. Можно ли как-то обмануть прогу, не присваивая переменной тип Variant и не прибегая к обработчику ошибок?
Аналогично с плавающей точкой. Хотя эти типы и так называются, но у меня Single и Double определяются, когда число с запятой. Как быть с типом переменных в этом случае. Либо еще лучше, как сделать, чтобы введенные в этом случае точка превращалась в запятую
Типы переменных.
Модератор: Naeel Maqsudov
1)
2)
Код: Выделить всё
If Not IsNumeric(Me.TextBox1) Then
MsgBox "Введите число!", vbExclamation, "Ошибка"
End If
Код: Выделить всё
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Sub
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте kminas.
в дополнение к ответу Pavel55Евгений.
в дополнение к ответу 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
можно так:" писал(а):Либо еще лучше, как сделать, чтобы введенные в этом случае точка превращалась в запятую
str = Replace(cStr(number), ",", ".")
number = cDbl(str)
Спасибо всем!
На одном из форумов мне предложили вариант, который, с небольшой поправкой хорошо выполнил задачу
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
На одном из форумов мне предложили вариант, который, с небольшой поправкой хорошо выполнил задачу
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