Hallo Mingos,
warum machst du hierfür keine neue Frage auf? Das würde anderen Nutzern die Übersicht erleichtern. Du kannst hier auch Links einfügen, die auf alte Threads verweisen.
Seis drum. Dann antworte ich dir eben hier: Deine Angaben sind dürftig. Korrigiere mich, wenn ich mich irre: Ich vermute, du willst das gewünschte Verhalten nur im genannten Bereich erleben. In diesem Bereich soll nur 1 oder 2 eingegeben werden, Andere Eingaben sind unzulässig. Außerhalb des Bereichs und auf anderen Tabellenblättern sollen Eingaben normal passieren. Von diesem Szenario ausgehend probiere mal das folgende Makro:
Erstelle ein neues Modul (z.B. Modul1) und gib dort diesen Code ein:
Sub Weiterspringen()
Dim Bereich As Range, i As Single
Set Bereich = Range("C4:G40")
If Not Intersect(ActiveCell, Bereich) Is Nothing Then
i = (ActiveCell.Row - Bereich.Row) * Bereich.Columns.Count _
+ ActiveCell.Column - Bereich.Column + 1
If i = Bereich.Cells.Count Then Bereich.Cells(1).Select _
Else Bereich.Cells(i + 1).Select
End If
End Sub
Sub Eingabe0()
ActiveCell = 0
Weiterspringen
End Sub
Sub Eingabe1()
ActiveCell = 1
Weiterspringen
End Sub
Sub Eingabe2()
ActiveCell = 2
Weiterspringen
End Sub
Gehe dann in das Modul das deinem Tabellenblatt entspricht (z.B. Tabelle1) und gib dort diesen Code ein:
Dim abgeschaltet As Boolean
Private Sub Worksheet_Activate()
If Not Intersect(ActiveCell, Range("C4:G40")) Is Nothing Then Abschalten
End Sub
Private Sub Worksheet_Deactivate()
Zuruecksetzen
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C4:G40")) Is Nothing Then
If abgeschaltet = False Then Abschalten
Else
If abgeschaltet = True Then Zuruecksetzen
End If
End Sub
Private Sub Abschalten()
'Schaltet das Standardverhalten bestimmter Tasten bei Tastendruck ab.
'Zahlen abschalten
On Error Resume Next
For key = 0 To 9
Application.OnKey Trim(Str(key)), "" 'Ziffern 0-9
Application.OnKey "+" & Trim(Str(key)), "" 'Zeichen !"§$%&/()=
Application.OnKey "^%" & Trim(Str(key)), "" 'Zeichen ²³{[]}
Next key
'Nummernblock abschalten
For key = 96 To 111
Application.OnKey "{" & key & "}", "" '0-9+-*/,
Next key
'Eingabe von Buchstaben abschalten
For key = 65 To 90 'A-Z
Application.OnKey "{" & key & "}", "" 'Kleinbuchstaben a-z
Application.OnKey "+{" & key & "}", "" 'Großbuchstaben A-Z
Application.OnKey "^%{" & key & "}", "" 'Drittbelegung @€µ etc.
Next key
'Sonderzeichen abschalten
For key = 186 To 226
Application.OnKey "{" & key & "}", "" 'äöüß+-,.#^´<
Application.OnKey "+{" & key & "}", "" 'ÄÖÜ?*';:_>
Application.OnKey "^%{" & key & "}", "" '|~\
Next key
'Verhalten definieren
Application.OnKey " ", "Weiterspringen"
Application.OnKey "{RETURN}", "Weiterspringen"
Application.OnKey "{ENTER}", "Weiterspringen"
Application.OnKey "0", "Eingabe0" 'Zifferntaste 0
Application.OnKey "1", "Eingabe1" 'Zifferntaste 1
Application.OnKey "2", "Eingabe2" 'Zifferntaste 2
Application.OnKey "{96}", "Eingabe0" 'Nummernblock 0
Application.OnKey "{97}", "Eingabe1" 'Nummernblock 1
Application.OnKey "{98}", "Eingabe2" 'Nummernblock 2
abgeschaltet = True
End Sub
Private Sub Zuruecksetzen()
On Error Resume Next
'Zahlen einschalten
For key = 0 To 9
Application.OnKey Trim(Str(key))
Application.OnKey "+" & Trim(Str(key))
Application.OnKey "^%" & Trim(Str(key))
Next key
'Nummernblock einschalten
For key = 96 To 111
Application.OnKey "{" & key & "}"
Next key
'Eingabe von Buchstaben einschalten
On Error Resume Next
For key = 65 To 90 'A-Z
Application.OnKey "{" & key & "}"
Application.OnKey "+{" & key & "}"
Application.OnKey "^%{" & key & "}"
Next key
'Sonderzeichen einschalten
For key = 186 To 226
Application.OnKey "{" & key & "}"
Application.OnKey "+{" & key & "}"
Application.OnKey "^%{" & key & "}"
Next key
'Definiertes Verhalten zurücksetzen
Application.OnKey " "
Application.OnKey "{RETURN}"
Application.OnKey "{ENTER}"
Application.OnKey "0"
Application.OnKey "1"
Application.OnKey "2"
Application.OnKey "{96}"
Application.OnKey "{97}"
Application.OnKey "{98}"
abgeschaltet = False
End Sub
Wenn du nun im Bereich C4:G40 Enter oder Space drückst springt es 1 weiter Eingaben wie 1 oder 2 werden gemacht und dann eins weiter gesprungen. Andere Eingaben sind nicht möglich.
Du kannst den Code natürlich auch an deine Bedürfnisse anpassen. Versuchs einfach mal.
Gruß Mr. K.