Very Simple Spell (Number to Words) 001 to 999 in VBA
Code Formatting

What certainly could be improved is the indentation of your code for better readability:

Function Do999(ThreeDigits As String)
    'Everything after your function header until End Function should be indented
    ' ...
End Function


Same for further conditional code blocks:

N1 = Left(ThreeDigits, 1): N2 = Right(ThreeDigits, 2)
If N2 &gt; 19 Then 
    t = Tens(Val(Mid(ThreeDigits, 2, 1))) &amp; dash &amp; Ones(Val(Right(ThreeDigits, 1))) 
Else 
    t = Ones(N2)
End If

Do999 = Trim(IIf(N1 &gt; 0, Ones(N1) &amp; Tens(10), "") &amp; " " &amp; t)


Function naming

Do999 isn't very clear / self descriptive about what the function does.
Convert0UpTo999ToWords might be a better choice for example.

Number output in words


  The function uses the dash "-" for numbers e.g. Forty-Two.


That's not how numbers are naturally written in words. Usually 42 would be written as forty-two.

Avoid the 1st letter of the number words to be capitalized.