Here is a VBA Approach for just cell A1.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
On Error GoTo Whoa
Application.EnableEvents = False
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Len(Range("A1").Value) <> 0 Then
For i = 1 To Len(Range("A1").Value)
Select Case Asc(Mid(Range("A1").Value, i, 1))
'~~> Check for 0-9, "," and "-"
Case vbKey0 To vbKey9, 44, 45
Case Else
Range("A1").ClearContents
MsgBox "Invalid Value"
Exit For
End Select
Next
End If
End If
Letscontinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Letscontinue
End Sub
The code goes in the Sheet1 code area.
![enter image description here]()
Screenshot (Code in Action)
![enter image description here]()
FOLLOWUP to the recent edit in the question
Change the line
If Len(Range("A1").Value) <> 0 Then
to
If Len(Range("A1").Value) <> 0 And _
UCase(Range("A1").Value) <> "FIXED" Then