Ваш код вызывает себя рекурсивно, если введенные переменные имеют неправильный тип.Это создаст бесконечный цикл.
Логически любая функция проверки должна возвращать простое «Да» или «Нет».Либо это проверено, либо нет.Это означает возврат простого Boolean
- что, в свою очередь, означает, что это должно быть Function
вместо Sub
.
И всегда use Option Explicit
.
Function verif_type(n1 as Variant, n2 as Variant) as Boolean
If TypeName(n1) = "Integer" And TypeName(n2) = "Integer" Then
verif_type = True
'MsgBox ("C'est bon !")
Else
verif_type = False
'MsgBox ("C'est pas bon, recommencez !")
'Unload UserForm1
'Call verif_type(n1, n2)
End If
End Function
Но это само по себе может быть еще более упрощено как
Function verif_type(n1 as Variant, n2 as Variant) as Boolean
verif_type = TypeName(n1) = "Integer" And TypeName(n2) = "Integer"
End Function
Теперь вся ваша логика ответа находится в вашем основном коде (я полагаю, в вашем UserForm
).
If verif_type(a,b) then
' Do something
Else
' Do something else
End If