Ввод в InputBox только цифр - VB

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

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

Народ, такая проблема, написал программу для решения диффуравнения, все работает как часы.. Но есть одно НО! 1) Мне нужно сделать, чтобы когда я вводил в окно InputBox шаг не в цифрах, а в тексте, то выдавало не ошибку, а окно с сообщение следующего типа: "нужно ввести цифры, а не текст" и т.п.. 2) Если я ничего не ввожу в окно InputBox, то вместо ошибки тоже выдавало какое - нибудь окно с сообщением. 3) Если я нажимаю в окне InputBox кнопку Cancel, то окно просто закрывалось, а не выдавало сообщение об ошибке. Вот код программы:
Листинг программы
  1. Private Sub CommandButton1_Click()
  2. Dim X As Double
  3. Dim Y As Double
  4. Dim X0 As Double
  5. Dim Y0 As Double
  6. Dim X1 As Double
  7. Dim Y1 As Double
  8. Dim Step As Double
  9. Dim k1 As Double
  10. Dim k2 As Double
  11. Dim k3 As Double
  12. Dim k4 As Double
  13. Step = InputBox("Введите значение шага h")
  14. If Step = 0 Or Step < 0 Or Step > 1 Then
  15. Step = MsgBox("Шаг не может быть больше единицы, равен нулю или быть отрицательным. Повторите ввод")
  16. Exit Sub
  17. End If
  18. X0 = 0
  19. X1 = 1
  20. Y0 = 0
  21. For X = X0 To X1 Step Step
  22. k1 = Step * F1(X, Y)
  23. k2 = Step * F1(X + Step / 2, Y + k1 / 2)
  24. k3 = Step * F1(X + Step / 2, Y + k2 / 2)
  25. k4 = Step * F1(X + Step, Y + k3)
  26. Y1 = (k1 + 2 * k2 + 2 * k3 + k4) / 6
  27. MsgBox "X =" + Format$(X, "# ### ##0.000") + "Y = " + Format$(Y, "# ### ##0.000")
  28. Y = Y1
  29. Next X
  30. End Sub
  31. Function F1(X As Double, Y As Double) As Double
  32. F1 = (1 / 3 * Sin(2 * X)) - (Y * Cos(3 * X))
  33. End Function
Буду приочень благодарен, реально нужна помощь, весь интернет перерыл и ничего не нашел(((

Решение задачи: «Ввод в InputBox только цифр»

textual
Листинг программы
  1.    ...
  2.    Dim k4 As Double
  3.    Do
  4.       Answ$ = InputBox("Введите значение шага h")
  5.       If Answ$="" Then Exit Sub
  6.       If Not isNumeric(Answ$) then
  7.          MsgBox "Нечисловой ввод! Повторите."
  8.       Else
  9.          Step=Cdbl(Answ$)
  10.          If Step <= 0 Or Step > 1 Then
  11.             MsgBox("Шаг не может быть больше единицы, равен нулю или быть отрицательным. Повторите.")
  12.          Else
  13.             Exit Do
  14.          End if
  15.       End if
  16.    Loop
  17.    X0 = 0
  18.    ...

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


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

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

7   голосов , оценка 4.286 из 5

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

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

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