Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewVal As String
'Only make changes to cells in column A
If Target.Column <> 1 Then Exit Sub
'Only make changes if it isnt already formatted
If InStr(1, Target.Value, "-", vbTextCompare) > 0 Then Exit Sub
'Put target value minus 1 character into the new format
NewVal = Format(Left(Target.Value, Len(Target.Value) - 1), _
"000-000000-0000")
'Add last character to the format
NewVal = NewVal & Right(Target.Value, 1)
'Put format into cell
Target.Value = NewVal
End Sub