La idea era mas simple:
1 - en el dni_keypress controlas que solo entren numeros.
Código vb:
Ver originalPrivate Sub Dni_KeyPress(KeyAscii As Integer)
If InStr(1,"0123456789",Chr(KeyAscii))=0 Then KeyAscii=0
End Sub
2 - en el dni_lostfocus controlas que el valor no salga del rango. Si sale del rango se pone el foco en el textbox de nuevo y se avisa del error:
Código vb:
Ver originalPrivate Sub Dni_LostFocus()
If Val(dni)<5000000 or val(dni)>50000000 then
msgbox "Dni no válido"
dni.setfocus
End If
End Sub