Private Sub Txt1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 8, 48 To 57
Case 13
Txt1_Validate False
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Txt1_Validate(Cancel As Boolean)
Select Case Val(Txt1.Text)
Case 9 To 21
Txt2.SetFocus
Case Else: Cancel = True
End Select
End Sub
Private Sub Txt2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 8, 48 To 57
Case 13
Txt2_Validate False
Case 45
If Txt2.SelStart = 0 Then
If Txt2.Text Like "-*" Then KeyAscii = 0
Else
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Txt2_Validate(Cancel As Boolean)
If Len(Txt2.Text) = 0 Then
Cancel = True: Exit Sub
End If
Select Case Val(Txt2.Text)
Case -5 To 5
Cmd1.SetFocus
Case Else: Cancel = True
End Select
'Select Case True
' ...
'End Select
End Sub
Private Sub Cmd1_Click()
Txt3.Text = (Val(Txt1.Text) + Val(Txt2.Text)) / 2
'Txt3.Text = CStr((Val(Txt1.Text) + Val(Txt2.Text)) / 2)
End Sub
Проблема с TextBox. Диапазон вводимых значений
Public A As Single
Public B As Single
Public C As Single
Private Sub Cmd1_Click()
rem ограничения для А
If Trim(txt1.Text) = "" Then
txt1.SetFocus
txt1_GotFocus
MsgBox "введите значение", vbInformation
Exit Sub
ElseIf (CLng(txt1.Text) < 1) Or (CLng(txt1.Text) > 9) Then
txt1.SetFocus
txt1_GotFocus
MsgBox "введите цифры от 1 до 9!", vbInformation
Exit Sub
End If
Rem ограничения для В
If Trim(txt2.Text) = "" Then
txt2.SetFocus
txt2_GotFocus
MsgBox "Введите значение", vbInformation
Exit Sub
ElseIf (CLng(txt2.Text) < -5) Or (CLng(txt2.Text) > 5) Then
txt2.SetFocus
txt2_GotFocus
MsgBox "Значение от -5 до 5!", vbInformation
Exit Sub
End If
Rem Обозначение переменных
A = Val(txt1.Text)
B = Val(txt2.Text)
Rem формула
C = (A + B) / 2
txt3.Text = Str(C)
End Sub
Rem ограничения для A
Private Sub txt1_keypress(KeyAscii As Integer)
txt1.MaxLength = 1
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub txt1_GotFocus()
txt1.SelStart = 0
txt1.SelLength = Len(txt1.Text)
End Sub
Private Sub txt1_Validate(Cancel As Boolean)
If Trim(txt1.Text) = "" Then
txt1_GotFocus
MsgBox "Введите значение", vbInformation
Cancel = True
Exit Sub
ElseIf (CLng(txt1.Text) < 1) Or (CLng(txt1.Text) > 9) Then
txt1_GotFocus
MsgBox "введите значение от 1 до 9", vbInformation
Cancel = True
Exit Sub
End If
End Sub
Rem ограничения для B
Private Sub txt2_KeyPress(KeyAscii As Integer)
txt2.MaxLength = 2
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 Then
KeyAscii = 0
End If
End Sub
Private Sub txt2_GotFocus()
txt2.SelStart = 0
txt2.SelLength = Len(txt1.Text)
End Sub
Private Sub txt2_Validate(Cancel As Boolean)
If Trim(txt2.Text) = "" Then
txt2_GotFocus
MsgBox "введите значение", vbInformation
Cancel = True
Exit Sub
ElseIf (CLng(txt2.Text) < -5) Or (CLng(txt2.Text) > 5) Then
txt2_GotFocus
MsgBox "Введите число от -5 до 5", vbInformation
Cancel = True
Exit Sub
End If
End Sub
Этот вариант не даёт возможности вводить значения со знаком "-" в txt2, а также я бы хотел чтобы после ввода числа в txt1 и нажатия клавиши enter, фокус перемещался на txt2 и после ввода данных в txt2 нажатием enter, фокус перемещался на Cmd1 и т.д. Каким должен быть этот код, чтобы была возможность вписывать в textbox только числовые значения (как положительные так и отрицательные) и была возможность перехода от одно textbox к другому с нажатием клавиши enter и чтоб при этом был определенный диапозон ввода данных (например только от 9 до 21)??? Я попытался сделать это в коде который я написал выше. У меня не получилось, мозгов не хватает, к тому же я не знаю константы клавиш.
А spin box не подходит?
Visual basic 5.0 ))))
Я только начал осваивать бэйсик и все что я знаю я читаю на форумах, но у меня нет хорошего знания языков программирования. Теперь мне нужно сделать програмку небольшую с интерфейсом каким нибудь.
у знака минус ascii - код 45 (keyCode 109 и 189 - если 45 не заработает)
разберетесь куда и как добавить?
Цитата: arrjj
Ну тогда намекну на простой вариант:
у знака минус ascii - код 45 (keyCode 109 и 189 - если 45 не заработает)
разберетесь куда и как добавить?
у знака минус ascii - код 45 (keyCode 109 и 189 - если 45 не заработает)
разберетесь куда и как добавить?
Проще не бывает!!!
Private Sub txt2_KeyPress(KeyAscii As Integer)
txt2.MaxLength = 3
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 And KeyAscii <> 45 Then
KeyAscii = 0
End If
End Sub
Большое спасибо!!!
В общем, не буду Вас агитировать ;) однако предложу глянуть (хотя бы одним глазом) на :
Код: