Вместо Inputbox
используйте Application.InputBox с Type:=1
. Это обеспечит только цифры c записей.
Это то, что вы пытаетесь? Это позволит значения, такие как 1,1.1,1.11,.1,.11
Sub Sample()
Dim Ret
Dim digitsAfterDecimal As Integer
Do
Ret = Application.InputBox(prompt:="Enter a number with max 2 decimal places", Type:=1)
'~~> If user presses cancel
If Ret = False Then Exit Do
'~~> Number of digits after decimal
digitsAfterDecimal = Len(CStr(Ret)) - InStr(CStr(Ret), ".")
'~~> This will allow up to 2 decimal
If digitsAfterDecimal < 3 Then Exit Do
Loop
If Ret <> False Then MsgBox Ret
End Sub