Как "обойти" деление на ноль - VB

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Хотел попросить помощи при решении следующей задачи. Вводимые значения в ТекстБоксы, а именно во 2-ом и 3-ем используются в дальнейшем в знаменателе. Ну и вылетает ошибка при делении на ноль. Как можно обойти эту проблему? Только через <If>?
Листинг программы
  1. 'Г*Г* ôîðìå 3 TextBox ГЁ 1 Label
  2. Option Explicit
  3. Dim b As Double
  4. Dim l As Double
  5. Dim a As Double
  6. Dim b_c As Double
  7. 'ÂÂÎÄ Â ÒÅÊÑÒ_1 ÒÎËÜÊÎ ×ÈÑÅË È ÇÀÏßÒÎÉ
  8. Private Sub Text1_KeyPress(KeyAscii As Integer)
  9. Select Case KeyAscii
  10. Case 48 To 57, 8 ' öèôðû è <Backspace>
  11. Case 44, 46 ' òî÷êГ* ГЁ Г§Г*ГЇГїГІГ*Гї
  12. KeyAscii = 46
  13. ' Г*ГҐ ïîçâîëÿåò ââîäèòü Г§Г*Г*ГЄ Г§Г*ïÿòîé ïîâòîðГ*Г®
  14. If InStr(Text1.Text, ".") <> 0 Then
  15. KeyAscii = 0
  16. End If
  17. Case Else
  18. KeyAscii = MsgBox("Ââîäèòü òîëüêî Г·ГЁГ±Г«Г* ГЁ òî÷êó") ' îòГ*ëüГ*ûå ñèìâîëû Г*ГҐ îòîáðГ*Г¦Г*ГѕГІГ±Гї âûâîäèòñÿ ñîîáùåГ*ГЁГҐ
  19. End Select
  20. End Sub
  21. 'ÂÂÎÄ Â ÒÅÊÑÒ_2 ÒÎËÜÊÎ ×ÈÑÅË È ÇÀÏßÒÎÉ
  22. Private Sub Text2_KeyPress(KeyAscii As Integer)
  23. Select Case KeyAscii
  24. Case 48 To 57, 8 ' öèôðû è <Backspace>
  25. Case 44, 46 ' òî÷êГ* ГЁ Г§Г*ГЇГїГІГ*Гї
  26. KeyAscii = 46
  27. ' Г*ГҐ ïîçâîëÿåò ââîäèòü Г§Г*Г*ГЄ Г§Г*ïÿòîé ïîâòîðГ*Г®
  28. If InStr(Text2.Text, ".") <> 0 Then
  29. KeyAscii = 0
  30. End If
  31. Case Else
  32. KeyAscii = MsgBox("Ââîäèòü òîëüêî Г·ГЁГ±Г«Г* ГЁ òî÷êó") ' îòГ*ëüГ*ûå ñèìâîëû Г*ГҐ îòîáðГ*Г¦Г*ГѕГІГ±Гї âûâîäèòñÿ ñîîáùåГ*ГЁГҐ
  33. End Select
  34. End Sub
  35. 'ÂÂÎÄ Â ÒÅÊÑÒ_3 ÒÎËÜÊÎ ×ÈÑÅË È ÇÀÏßÒÎÉ
  36. Private Sub Text3_KeyPress(KeyAscii As Integer)
  37. Select Case KeyAscii
  38. Case 48 To 57, 8 ' öèôðû è <Backspace>
  39. Case 44, 46 ' òî÷êГ* ГЁ Г§Г*ГЇГїГІГ*Гї
  40. KeyAscii = 46
  41. ' Г*ГҐ ïîçâîëÿåò ââîäèòü Г§Г*Г*ГЄ Г§Г*ïÿòîé ïîâòîðГ*Г®
  42. If InStr(Text3.Text, ".") <> 0 Then
  43. KeyAscii = 0
  44. End If
  45. Case Else
  46. KeyAscii = MsgBox("Ââîäèòü òîëüêî Г·ГЁГ±Г«Г* ГЁ òî÷êó") ' îòГ*ëüГ*ûå ñèìâîëû Г*ГҐ îòîáðГ*Г¦Г*ГѕГІГ±Гї âûâîäèòñÿ ñîîáùåГ*ГЁГҐ
  47. End Select
  48. End Sub
  49. Private Sub Text1_Change()
  50. b = Val(Text1.Text)
  51. dav
  52. End Sub
  53. Private Sub Text2_Change()
  54. l = Val(Text2.Text)
  55. dav
  56. End Sub
  57. Private Sub Text3_Change()
  58. a = Val(Text3.Text)
  59. dav
  60. End Sub
  61. Private Sub dav()
  62. b_c = Round(3 * (b / l + 1 / a), 3)
  63. Label1.Caption = b_c
  64. End Sub
Буду также признателен за различного рода советы. Всем откликнувшимся огромное спасибо!

Решение задачи: «Как "обойти" деление на ноль»

textual
Листинг программы
  1. Private Sub dav()
  2. if ((l = 0) or (a = 0)) then
  3.     Label1.Caption = "Ошибка"
  4.   else
  5.     Label1.Caption = Round(3 * (b / l + 1 / a), 3)
  6. end if
  7. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут