, поскольку возвращаемое значение кнопки отмены - пустая строка, переменная arg должна быть строкой, затем, спрашивая, является ли она числовой, вы можете сказать, нажали ли вы кнопку отмены, используйте «Выход из Do» для выхода из цикла, ваш код может быть таким:
Sub msgbox_icons()
Dim arg, t As String
t = "Message Box Icons Demo"
Do
arg = InputBox(Prompt:="Enter below one of the integers: (16, 32, 48 or 64):", Title:=t)
If Not IsNumeric(arg) Then
Exit Do
ElseIf arg = 16 Then
MsgBox(arg & "<=> Critical Message Icon", vbCritical + vbOK, t)
ElseIf arg = 32 Then
MsgBox(arg & "<=> Warning Query Icon", vbQuestion + vbOK, t)
ElseIf arg = 48 Then
MsgBox(arg & "<=> Warning Message Icon", vbExclamation + vbOK, t)
ElseIf arg = 64 Then
MsgBox(arg & "<=> Information Message Icon", vbInformation + vbOK, t)
Else
MsgBox(arg & "<=> non-existent icon type", vbOKCancel, t)
End If
Loop
End Sub