Make the field a text field. Then set a validation rule for ######## so it'll only take numbers on the form.
I then do an event procedure after update to grab the value from the field, look at it's length and pad zeros where needed and stuff it back into the field. I kludged this one together but it works for my purposes - in my case I had to tag the date into the field.
Private Sub Add_Click()
On Error GoTo Err_Add_Click
DoCmd.GoToRecord , , acNewRec
'Forms![F_Case]!AGNo.Value = ""
Dim dbs As Database
Dim rst As Recordset
Dim strSQL As String
Dim crser As Long
Dim ser As String
Dim ser1 As String
Dim ser2 As String
Dim dt As Date
Dim ys As String
Dim an As String
' Now function returns current date/time
dt = Now
'Year function with RIGHT string operation to strip first two year chars out.
ys = Right(Year(dt), 2)
' Now get the current serial number
Set dbs = CurrentDb
strSQL = "SELECT * FROM T_Serial"
Set rst = dbs.OpenRecordset(strSQL)
With rst
crser = .Fields("Count"

End With
rst.Close
dbs.Close
'First convert numeric value to string value
ser = Str(crser)
'Strip out leading space to get number without sign placeholder
ser1 = Right(ser, Len(ser) - 1)
'Test length of serial number to see if leading zero padding is required.
If Len(ser1) = 1 Then
ser2 = "000" + ser1
End If
If Len(ser1) = 2 Then
ser2 = "00" + ser1
End If
If Len(ser1) = 3 Then
ser2 = "0" + ser1
End If
If Len(ser1) = 4 Then
ser2 = ser1
End If
'Now create composite string with yy-nnnn format.
an = ys + "-" + ser2
'increment serial count by one
crser = crser + 1
'Write value back to table.
Set dbs = CurrentDb
strSQL = "SELECT * FROM T_Serial"
Set rst = dbs.OpenRecordset(strSQL)
With rst
.Edit
.Fields("Count"

= crser
.Update
End With
rst.Close
dbs.Close
'Now open the form
DoCmd.GoToRecord , , acNewRec
Forms![F_Case]!AGNo.Value = an
Exit_Add_Click:
Exit Sub
Err_Add_Click:
MsgBox err.Description
Resume Exit_Add_Click
End Sub