Итак, в основном я пытаюсь создать простую подпрограмму root, которая будет принимать значение через поле ввода и выводить квадрат root этого значения, если оно есть.
Если в процессе ввода возникает ошибка (например, если я ввожу букву «а»), он вызовет обработчик ошибок и попросит пользователя повторно ввести значение, пока ошибка «несоответствие типов» не исчезнет (то есть когда Err.Number = 0)
Проблема, которую я получаю, заключается в том, что, хотя ошибка перенаправляется на мой обработчик ошибок, она работает только один раз. Когда я снова ввожу значение как «a», это вызывает ошибку «несоответствие типов», и вся подпрограмма останавливается, вместо того, чтобы итеративно предлагать пользователю значение числового значения c снова, как я и предполагал .
Public Sub realnumber()
On Error GoTo line
Dim rn As Double, re As Double
rn = InputBox("please enter a real number")
sqrn = Format(Sqr(rn), "0.00")
Debug.Print (sqrn)
Exit Sub
line:
Select Case Err.Number
Case 13
Do While Err.Number = 13
re = InputBox("re-enter")
Loop
rn = re
Resume
End Select
End Sub