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!
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.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
17.04.2021, 19:14 (Dieser Beitrag wurde zuletzt bearbeitet: 17.04.2021, 19:21 von UC-Scorer.)
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
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
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.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
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.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
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