Как "обойти" деление на ноль - VB
Формулировка задачи:
Всем доброго времени суток. Хотел попросить помощи при решении следующей задачи.
Вводимые значения в ТекстБоксы, а именно во 2-ом и 3-ем используются в дальнейшем в знаменателе.
Ну и вылетает ошибка при делении на ноль. Как можно обойти эту проблему? Только через <If>?
Буду также признателен за различного рода советы. Всем откликнувшимся огромное спасибо!
Листинг программы
- 'Г*Г* ôîðìå 3 TextBox ГЁ 1 Label
- Option Explicit
- Dim b As Double
- Dim l As Double
- Dim a As Double
- Dim b_c As Double
- 'ÂÂÎÄ Â ÒÅÊÑÒ_1 ÒÎËÜÊÎ ×ÈÑÅË È ÇÀÏßÒÎÉ
- Private Sub Text1_KeyPress(KeyAscii As Integer)
- Select Case KeyAscii
- Case 48 To 57, 8 ' öèôðû è <Backspace>
- Case 44, 46 ' òî÷êГ* ГЁ Г§Г*ГЇГїГІГ*Гї
- KeyAscii = 46
- ' Г*ГҐ ïîçâîëÿåò ââîäèòü Г§Г*Г*ГЄ Г§Г*ïÿòîé ïîâòîðГ*Г®
- If InStr(Text1.Text, ".") <> 0 Then
- KeyAscii = 0
- End If
- Case Else
- KeyAscii = MsgBox("Ââîäèòü òîëüêî Г·ГЁГ±Г«Г* ГЁ òî÷êó") ' îòГ*ëüГ*ûå ñèìâîëû Г*ГҐ îòîáðГ*Г¦Г*ГѕГІГ±Гї âûâîäèòñÿ ñîîáùåГ*ГЁГҐ
- End Select
- End Sub
- 'ÂÂÎÄ Â ÒÅÊÑÒ_2 ÒÎËÜÊÎ ×ÈÑÅË È ÇÀÏßÒÎÉ
- Private Sub Text2_KeyPress(KeyAscii As Integer)
- Select Case KeyAscii
- Case 48 To 57, 8 ' öèôðû è <Backspace>
- Case 44, 46 ' òî÷êГ* ГЁ Г§Г*ГЇГїГІГ*Гї
- KeyAscii = 46
- ' Г*ГҐ ïîçâîëÿåò ââîäèòü Г§Г*Г*ГЄ Г§Г*ïÿòîé ïîâòîðГ*Г®
- If InStr(Text2.Text, ".") <> 0 Then
- KeyAscii = 0
- End If
- Case Else
- KeyAscii = MsgBox("Ââîäèòü òîëüêî Г·ГЁГ±Г«Г* ГЁ òî÷êó") ' îòГ*ëüГ*ûå ñèìâîëû Г*ГҐ îòîáðГ*Г¦Г*ГѕГІГ±Гї âûâîäèòñÿ ñîîáùåГ*ГЁГҐ
- End Select
- End Sub
- 'ÂÂÎÄ Â ÒÅÊÑÒ_3 ÒÎËÜÊÎ ×ÈÑÅË È ÇÀÏßÒÎÉ
- Private Sub Text3_KeyPress(KeyAscii As Integer)
- Select Case KeyAscii
- Case 48 To 57, 8 ' öèôðû è <Backspace>
- Case 44, 46 ' òî÷êГ* ГЁ Г§Г*ГЇГїГІГ*Гї
- KeyAscii = 46
- ' Г*ГҐ ïîçâîëÿåò ââîäèòü Г§Г*Г*ГЄ Г§Г*ïÿòîé ïîâòîðГ*Г®
- If InStr(Text3.Text, ".") <> 0 Then
- KeyAscii = 0
- End If
- Case Else
- KeyAscii = MsgBox("Ââîäèòü òîëüêî Г·ГЁГ±Г«Г* ГЁ òî÷êó") ' îòГ*ëüГ*ûå ñèìâîëû Г*ГҐ îòîáðГ*Г¦Г*ГѕГІГ±Гї âûâîäèòñÿ ñîîáùåГ*ГЁГҐ
- End Select
- End Sub
- Private Sub Text1_Change()
- b = Val(Text1.Text)
- dav
- End Sub
- Private Sub Text2_Change()
- l = Val(Text2.Text)
- dav
- End Sub
- Private Sub Text3_Change()
- a = Val(Text3.Text)
- dav
- End Sub
- Private Sub dav()
- b_c = Round(3 * (b / l + 1 / a), 3)
- Label1.Caption = b_c
- End Sub
Решение задачи: «Как "обойти" деление на ноль»
textual
Листинг программы
- Private Sub dav()
- if ((l = 0) or (a = 0)) then
- Label1.Caption = "Ошибка"
- else
- Label1.Caption = Round(3 * (b / l + 1 / a), 3)
- end if
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д