Sorry I posted the wrong version

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
Dim iChar As Integer
   For Each Rng In Target
      If Not Application.Intersect(Target, _
      Range("A2")) Is Nothing Then
         If Rng.Value <> "" Then
            For iChar = 1 To Len(Rng.Value)
               Select Case Mid(Rng.Value, iChar, 1)
               Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", _
                            "a", "A", "b", "B", "c", "C", "d", "D", "e", "E", _
                            "f", "F", "g", "G", "h", "H", "i", "I", "j", "J", _
                            "k", "K", "l", "L", "m", "M", "n", "N", "o", "O", _
                            "p", "P", "q", "Q", "r", "R", "s", "S", "t", "T", _
                            "u", "U", "v", "V", "w", "W", "x", "X", "y", "Y", _
                            "z", "Z", ".", ",", "-", " "
               Case Else
                  MsgBox "Invalid Charactor Entered in " & Rng.Address & Chr(10) & Mid(Rng.Value, iChar, 1)
                  'Rng.ClearContents
                  Exit For
               End Select
            Next iChar
         End If
      End If
   Next Rng
End Sub