###Not to be negative, but...
Your Else
case is making a bad assumption, that whichever number reaches that branch is going to be greater than 1000. I don't mind the recursion; I don't even mind the Select Case
- but by not handling negative integers you have a bug there, where -42 is going to be treated as if it were greater than 1000, and even worse, it's going to be subtracted 1000 before being fed into a recursive call: I haven't executed it, but it seems your code would blow up with a very easily avoidable overflow error with just about any negative input.
There should be an input validation guard clause before the select block, to ensure you're not entering a recursive logic with a zero or negative input.
Now if valid input is an integer between 1 and 3999, then there is no need to intake a Long
- the Integer
data type is sufficient.