Clever-Excel-Forum

Normale Version: Mit TAB gezielt in Zellen springen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, Ich bin neu in diesem Forum. Hier konnte mir schon oft geholfen werden. Aber jetzt habe ich ein Problem und finde nirgendwo eine Lösung. Vielleicht kann mir einer von Euch helfen:

Ich habe eine Excel Arbeitsmappe, wo ich ein Tabellenblatt habe, welches ich nach und nach mit Zahlen füllen muss/will. Ich möchte aber nicht ständig mit "Enter" oder mit Maus arbeiten müssen, sondern am liebsten nur mit "TAB".

Ich einem anderen Forum hatte ich eine Lösung gefunden, aber diese funktionierte nicht 100%ig.

Die Aufgabe:
- Alle Zeilen und Spalten, die nicht genutzt werden, werden von Hand ausgeblendet und das Tabellenblatt wird geschützt

Nun wähle ich die Zelle H6 aus und fülle sie mit einem Wert.
- Mit "TAB" möchte ich nun zu der Zelle H7, dann H8 , usw. bis H20
Dann soll es weitergehen in:
I6, I7, … , I20
Aber dann soll es erst in Spalte "U" weitergehen;
U6, U7, … , U20 , usw. (das muss ich dann selber ergänzen)
Wichtig: Wenn die Spalten bzw. Zeilen ausgeblendet sind, dann sollen sie übersprungen werden.

Kann mir einer einen VBA Code schreiben, den ich selber ergänzen kann? Danke im Voraus!
Hallo,

mit der Tab-Taste springt man normalerweise horizontal, da werden dann auch ausgeblendete Spalten übersprungen. Da in Excel Datensätze auch Zeilenweise angeordnet sind (sein müssen) verstehe ich nicht, warum du vertikal springen willst.
Zitat:mit der Tab-Taste springt man normalerweise horizontal

Normalerweise ja. Aber ich muss Zahlen (Werte) eingeben, die ich auch untereinander aufgeschrieben bekomme. Während der Eingabe umdenken, ist mir dann doch zu anstrengend. Auch weil es schnell gehen muss. Die Daten werden mit Verknüpfungen in andere Tabellenblätter geleitet, wo sie verarbeitet werden.

Das ist die Formel, die ich in einem anderen Forum gefunden habe. Sie funktioniert, aber nicht so 100%ig

Code:
Option Explicit

Private Const cnReihenfolge As String = "H6,H7,H8,H9,H10,H11,H12,H13,H14,H15,H16,H17,H18,H19,H20,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15,I16,I17,I18,I19,I20,U6"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim arr As Variant
Static rngTemp As Range
Dim i As Integer
    If Not rngTemp Is Nothing Then
        arr = Split(cnReihenfolge, ",")
        If Not Application.Intersect(ActiveCell, Range(cnReihenfolge).Offset(0, 1)) Is Nothing _
        Or Not Application.Intersect(ActiveCell, Range(cnReihenfolge).Offset(1, 0)) Is Nothing Then
            For i = 0 To UBound(arr)
                If arr(i) = rngTemp.Address(0, 0) Then
                    Set rngTemp = Range(arr((i + 1) Mod (UBound(arr) + 1)))
                    If rngTemp.EntireRow.Hidden = True Then Set rngTemp = rngTemp.Offset(2)
                    Application.EnableEvents = False
                    rngTemp.Select
                    Application.EnableEvents = True
                    Exit Sub
                End If
            Next
        End If
    End If
    Set rngTemp = Application.Intersect(ActiveCell, Range(cnReihenfolge))
End Sub
Hallöchen,

wenn Du Zahlen eingibst dann verwende den Ziffernblock und drücke mit dem kleinen Finger die am Ziffernblock befindliche ENTER-Taste oder mit dem Daumen den Pfeil nach unten Smile

Ansonsten könntest Du auch mit dem Blattschutz arbeiten. gib z.B. den Schutz für die betreffende Spalte oder den Bereich in der Spalte frei, z.B. H, und dann setzt Du den Blattschutz. Wenn Du in Spalte H fertig bist, nimmst Du den Blattschutz weg, aktivierst den Schutz in Spalte H, gibst Spalte U frei und setzt den Blattschutz wieder. usw. usf..
Dafür bräuchtest Du kein Makro oder wenn Du unbedingt willst könntest Du diese Aktionen auch aufzeichnen und dann die Einstellungen auf Knopfdruck erledigen.

Bei dem Makro könntest Du zum einen statt der Zellen die Spalten definieren und müsstest dann zusätzlich die vor dem Wechsel aktive Zelle merken.
Hallo,


Zitat:Sie funktioniert, aber nicht so 100%ig


das ist mal eine optimale Problembeschreibung.  Angel
Zitat:das ist mal eine optimale Problembeschreibung. 


Oh, da hast Du natürlich Recht.  Blush

Ich möchte, dass die Zellen, wenn sie im ausgeblendetem Bereich sind, übersprungen werden und direkt zur nächsten Zelle gesprungen wird.
Hallo,

stimmt, bei ausgeblendeten Zeilen funktioniert das nicht richtig. Bleibt für mich die Frage, wieso sind in den externen Daten, die hier eingepflegt werden sollen, solche Lücken? Eine (anonymisierte) Beispieldatei könnte eventuell Klarheit schaffen.
Oder hier springen ?

http://www.office-loesung.de/p/viewtopic.php?f=166&t=863843#p3350702
Hallo UC-Scorer,

mein Vorschlag ist, den definierten Bereich einfach zu markieren. Dann folgt die Steuerung automatisch der vorgegebenen Reihenfolge, und das sogar unabhängig davon, ob Enter oder TAB benutzt wird.

Der Code kommt in ein allgemeines Modul (oben unter Einfügen > Modul):

Code:
Sub EingabebereichMarkieren()
  Const cnReihenfolge As String = "H6,H7,H8,H9,H10,H11,H12,H13,H14,H15,H16,H17,H18,H19,H20,I6,I7,I8,I9,I10,I11,I12,I13,I14,I15,I16,I17,I18,I19,I20,U6"
  On Error Resume Next
  Range(cnReihenfolge).SpecialCells(xlCellTypeVisible).Select
  If Err.Number Then MsgBox Err.Description
  On Error GoTo 0
End Sub

Den bisherigen Ereigniscode löschst Du komplett.

Gruß Uwe