Я пытаюсь закодировать что-то, что просит вас поставить определенный лот #. Если введенный вами номер неверен, появится всплывающее окно с сообщением, чтобы повторить попытку или отменить. Если вы нажмете «Попытаться снова», он просто вернется к первому вопросу, тогда как «Отмена» сделает inputbox = «», а затем продолжит выход из подпрограммы, оставляя пустую ячейку. Проблема заключается в том, что на данный момент одна итерация ввода чего-то неправильно и нажатия отмены немедленно работает и оставляет пустую ячейку. Тем не менее, если я введу число, скажем, 33333, нажмите «Попытаться еще раз», а теперь введите «22222» (что все еще не так), а затем нажмите «Отмена» на этот раз, потому что я хочу выйти из цикла, он выходит из цикла, но остается позади «22222» вместо того, чтобы оставить ячейку пустой.
Sub InputNum()
'input number
Dim lotData As String
'requests an input number to be put in
lotData = InputBox("Scan in Lot #")
'checks to ensure the number put in is 3 characters long
If Len(lotData) <> 3 Then
'error message
Result = MsgBox("Invalid Lot # Inputed. Must be 3 Characters. Try Again?", vbOKCancel)
'if cancel is clicked, input number is made blank and sub is exited
If Result = vbCancel Then
lotData = ""
Exit Sub
'if ok is clicked to try again, recurses to beginning of code again
Else
InputNum
End If
End If
'input number is put into current cell
ActiveCell.Value = lotData
End Sub