Clever-Excel-Forum

Normale Version: Cursor automatisch in nächste Zelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich suche nach folgender Lösung:

wenn ich in die Zelle die ziffer "1" oder "2" eingebe,
soll der Cursor automatisch (ohne Entertaste) auf die nächste Zelle springen.

In folgender Reihenfolge:
C4 - D4 - E4 - F4 - G4
C5 - D5 - E5 - F5 - G5
C6 - D6 - E6 - F6 - G6
C7 - D7 - E7 - F7 - G7

usw. bis G40.

bei allen anderen Zeichen, Buchstaben und Zahlen, bleibt die Zelle leer!

Vielen Dank
Hallo,

alle Zellen, bis auf die zu beschreibenden sperren. Dann kannst du mit der Tab-Taste durchklicken.
Hallo Klaus,

vielen lieben Dank für Deine schnelle Antwort!

Das ist genau das was ich eben nicht möchte, keine TAB-Taste, keine ENTER-Taste.

Der Cursor soll direkt nach Eingabe von "1" oder "2" direkt in die nächste Zelle.

Bei Eingabe aller anderen Zeichen, Symbole, Leertaste, Buchstaben soll die Zelle leer blaiben
und der Cursor direkt in die nächste Zelle in der Reihenfolge wie oben angegeben...

Vielen Dank und Besten Gruß
(16.11.2019, 16:46)Mingos schrieb: [ -> ]wenn ich in die Zelle die ziffer "1" oder "2" eingebe,
soll der Cursor automatisch (ohne Entertaste) auf die nächste Zelle springen.
Eine Zelleingabe muss immer abgeschlossen werden. Entweder mit ENTER oder mit einer Cursor-Taste oder mit der TAB-Taste.

(16.11.2019, 16:46)Mingos schrieb: [ -> ]bei allen anderen Zeichen, Buchstaben und Zahlen, bleibt die Zelle leer!
Warum solltest du andere Werte als 1 oder 2 eingeben wenn du nur 1 oder 2 benötigst?
Hallo,

Zitat:Das ist genau das was ich eben nicht möchte, keine TAB-Taste, keine ENTER-Taste.

... dann solltest Du Dich an Microsoft wenden.
Hier wird Dir jeder nur raten können, Dich demütig in die Gegebenheiten zu fügen.

OK: Ein Versuch, Dir begreiflich zu machen, warum das nichr möglich ist.

Wie soll Excel zwischen den Zuständen entscheiden
ob Du Deine Eingabe beendet hast
Dann könnte Excel in die nächste Zelle hüpfen
oder
das Du Dir nur am Kopf kratzt Was bedeuten würde, daß Excel noch warten muß

Bring das mal unter einen Hut
Es soll angeblich über einen sogenannten VBA-Code funtioniere, ich weiß nur nicht welches...
Hallo,

VBA ist eine Programmiersprache, mit der man Excel in gewisser weise auch steuern kann. Trotzdem gilt auch hier, was Käptn Blaubär geschrieben hatte, das Programm muss erkennen können, wann die Eingabe abgeschlossen ist. Woher soll es wissen, ob ein Zeichen oder mehrere pro Zelle eingegeben werden sollen.
VBA-Codes gibt es nicht vor konfektioniert, die muss man schon selber schreiben.
Woher soll es wissen, ob ein Zeichen oder mehrere pro Zelle eingegeben werden sollen? Es geht um Tastenanschläge, nicht Eingaben.

Über Applikation.OnKey könnte man ohne 1, 2 und ESC die anderen Tasten (String aller anderen Tasten, Split-Zuweisung in ein Array) im Nicht-Kombinationsmodus umleiten. Im Kombi-Modus ginge es auch; dann würde es aber recht viel. 
  • Bei 1 und 2 würde ein Eintrag vorgenommen, bei anderen nicht. 
  • Die Zelle würde in gewünschter Richtung gewechselt (außer bei ESC). 
  • Ob vor dem Eintrag die Zelle gelöscht werden soll, müsste TE noch sagen.

Bei ESC würde dieser "Mingos"-Modus verlassen.
Hallo Mingos,

so ginge es zum Beispiel:



' **************************************************************
'  Modul:  DieseArbeitsmappe  Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************


Option Explicit

Private Sub Workbook_Activate()
 If ActiveSheet.CodeName = "Tabelle1" Then '<< TabellenCodename anpassen
   If Not Application.Intersect(ActiveCell, Range("C4:G40")) Is Nothing Then
     TabsteuerungEin
   End If
 End If
End Sub

Private Sub Workbook_Deactivate()
 If ActiveSheet.CodeName = "Tabelle1" Then '<< TabellenCodename anpassen
   TabsteuerungAus
 End If
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 If Sh.CodeName = "Tabelle1" Then '<< TabellenCodename anpassen
   If Not Application.Intersect(ActiveCell, Range("C4:G40")) Is Nothing Then
     TabsteuerungEin
   End If
 Else
   TabsteuerungAus
 End If
End Sub


' **************************************************************
'  Modul:  Tabelle1  Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************


Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not Application.Intersect(ActiveCell, Range("C4:G40")) Is Nothing Then
   TabsteuerungEin
 Else
   TabsteuerungAus
 End If
End Sub


' **************************************************************
'  Modul:  mTabsteuerung  Typ = Allgemeines Modul
' **************************************************************


Option Explicit

Dim bolR As Boolean

Public Sub TabsteuerungAus()
 Dim i As Long
 For i = 1 To 255
   Application.OnKey "{" & i & "}"
   Application.OnKey "+{" & i & "}"
   Application.OnKey "^{" & i & "}"
   Application.OnKey "%{" & i & "}"
   Application.OnKey "+^{" & i & "}"
   Application.OnKey "+%{" & i & "}"
   Application.OnKey "^%{" & i & "}"
   Application.OnKey "+^%{" & i & "}"
 Next i
 'MsgBox "Tabsteuerung ist ausgeschaltet", vbInformation, "Tabsteuerung"
End Sub

Public Sub TabsteuerungEin()
 Dim i As Long
 For i = 1 To 255
   Application.OnKey "{" & i & "}", "TabV"
   Application.OnKey "+{" & i & "}", "TabV"
   Application.OnKey "^{" & i & "}", "TabV"
   Application.OnKey "%{" & i & "}", "TabV"
   Application.OnKey "+^{" & i & "}", "TabV"
   Application.OnKey "+%{" & i & "}", "TabV"
   Application.OnKey "^%{" & i & "}", "TabV"
   Application.OnKey "+^%{" & i & "}", "TabV"
 Next i
 Application.OnKey "{" & 49 & "}", "Eintrag1"
 Application.OnKey "{" & 97 & "}", "Eintrag1"
 Application.OnKey "{" & 50 & "}", "Eintrag2"
 Application.OnKey "{" & 98 & "}", "Eintrag2"
 Application.OnKey "{RIGHT}", "TabV"     'NACH-RECHTS-TASTE
 Application.OnKey "{TAB}", "TabV"       'TAB
 Application.OnKey "{ENTER}", "TabV"     'EINGABETASTE (Zehnertastatur)
 Application.OnKey "{RETURN}", "TabV"    'EINGABETASTE
 Application.OnKey "{LEFT}", "TabZ"      'NACH-LINKS-TASTE
 Application.OnKey "{BS}", "TabZ"        'RÜCKTASTE
 Application.OnKey "+{TAB}", "TabZ"      'UMSCHALT+TAB
 Application.OnKey "+{ENTER}", "TabZ"    'UMSCHALT+EINGABETASTE (Zehnertastatur)
 Application.OnKey "+{RETURN}", "TabZ"   'UMSCHALT+EINGABETASTE
 'MsgBox "Tabsteuerung ist eingeschaltet", vbInformation, "Tabsteuerung"
End Sub

Private Sub Eintrag1()
 ActiveCell.Value = 1
 TabV
End Sub

Private Sub Eintrag2()
 ActiveCell.Value = 2
 TabV
End Sub

Private Sub TabV()
 bolR = False
 Navigieren
End Sub

Private Sub TabZ()
 bolR = True
 Navigieren
End Sub

Private Sub Navigieren()
 Dim i As Long, j As Long
 Static strZ As String
 Dim varA As Variant
  varA = Array("C4", "D4", "E4", "F4", "G4", "C5", "D5", "E5", "F5", "G5", "C6", "D6", "E6", "F6", "G6", "C7", "D7", "E7", "F7", "G7", "C8", "D8", "E8", "F8", "G8", "C9", "D9", "E9", "F9", "G9", "C10", "D10", "E10", "F10", "G10", "C11", "D11", "E11", "F11", "G11", _
               "C12", "D12", "E12", "F12", "G12", "C13", "D13", "E13", "F13", "G13", "C14", "D14", "E14", "F14", "G14", "C15", "D15", "E15", "F15", "G15", "C16", "D16", "E16", "F16", "G16", "C17", "D17", "E17", "F17", "G17", "C18", "D18", "E18", "F18", "G18", "C19", "D19", "E19", "F19", "G19", _
               "C20", "D20", "E20", "F20", "G20", "C21", "D21", "E21", "F21", "G21", "C22", "D22", "E22", "F22", "G22", "C23", "D23", "E23", "F23", "G23", "C24", "D24", "E24", "F24", "G24", "C25", "D25", "E25", "F25", "G25", "C26", "D26", "E26", "F26", "G26", "C27", "D27", "E27", "F27", "G27", _
               "C28", "D28", "E28", "F28", "G28", "C29", "D29", "E29", "F29", "G29", "C30", "D30", "E30", "F30", "G30", "C31", "D31", "E31", "F31", "G31", "C32", "D32", "E32", "F32", "G32", "C33", "D33", "E33", "F33", "G33", "C34", "D34", "E34", "F34", "G34", "C35", "D35", "E35", "F35", "G35", _
               "C36", "D36", "E36", "F36", "G36", "C37", "D37", "E37", "F37", "G37", "C38", "D38", "E38", "F38", "G38", "C39", "D39", "E39", "F39", "G39", "C40", "D40", "E40", "F40", "G40")
 For i = 0 To UBound(varA) - 1
   If varA(i) = ActiveCell.Address(0, 0) Then
     j = 1
     Exit For
   End If
 Next i
 If j = 1 Then
   strZ = ActiveCell.Address(0, 0)
   j = 0
 Else
   For i = 0 To UBound(varA) - 1
     If varA(i) = strZ Then Exit For
   Next i
 End If
 If bolR Then
   If i = 0 Then
     If varA(UBound(varA) - 1) = "F22" Then j = Abs(Range("D22").Value - 1)
     strZ = varA(UBound(varA) - j)
   Else
     If varA(i - 1) = "F22" Then j = Abs(Range("D22").Value - 1)
     strZ = varA(i - j - 1)
   End If
 Else
   If varA((i + 1) Mod (UBound(varA) + 1)) = "F22" Then j = Abs(Range("D22").Value - 1)
   strZ = varA((i + j + 1) Mod (UBound(varA) + 1))
 End If
 Range(strZ).Select
End Sub

Gruß Uwe
Hallo Kuwer,

den Zellbereich kann man ja auch im VBA-Editor-Eigenschaftenfenster vorbesetzen.
Seiten: 1 2