Liebe Experten,
für die ausschließliche Eingabe der Zeichen A – E in ein Excel 2003 Tabellenblatt, nutze ich folgendes kleines Makro:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Text1 As String
Dim Text2 As String
Dim Text3 As String
Dim Text4 As String
Dim Text5 As String
Dim Text6 As String
Text1 = „es sind nur folgende Eingaben möglich:“
Text2 = „A, B, C, D oder E“
Text3 = „das sollte nicht passieren,“
Text4 = „es trat ein Fehler auf!“
Text5 = „Bitte prüfen Sie Ihre letzten Eingaben und wiederholen“
Text6 = „Sie sie gegebenenfalls noch einmal Schritt für Schritt.“
On Error GoTo Fehler
Dim rngZelle As Range
Dim rngBereich As Range
Set rngZelle = Intersect(Target, Range(„A1:stuck_out_tongue:60“))
If Not rngZelle Is Nothing Then
Application.EnableEvents = False
Select Case Target.Value
Case „a“ , „A“
Target.Value = „A“
Case „b“ , „B“
Target.Value = „B“
Case „c“ , „C“
Target.Value = „C“
Case „d“ , „D“
Target.Value = „D“
Case „e“ , „E“
Target.Value = „E“
Case „“
Target.Value = „“
Case Else
Application.Undo
MsgBox Text1 & vbLf & Text2, vbInformation, „sorry,“
End Select
Application.EnableEvents = True
End If
Exit Sub
Fehler:
MsgBox Text3 & vbLf & Text4 & vbLf & Text5 & vbLf & Text6, vbCritical, „Entschuldigung,“
Application.Undo
End Sub
Das funktioniert soweit zufriedenstellend, bis auf zwei Bugs:
-
markiert ein Nutzer mehrere Zellen und versucht die Daten zu löschen, gibt es eine Fehlermeldung.
Dies fange ich mit „Application.Undo“ ab. Finde es aber insgesamt etwas unbefriedigend, dass es überhaupt zu einem Fehler kommt. -
Nach Ausführung von „Application.Undo“ kann man in die Zellen schreiben was man will. Die ausschließliche Eingabe der Zeichen A – D ist nicht mehr gültig.
Hat jemand eine gute Idee, wie man die beiden Probleme lösen kann?
Danke im Voraus
Jorma