Excel: best. Zellen per Tab in best. Reihenfolge

Hallo Experten,

ich habe das folgende Problemchen, zu welchem ich bisher im Internet keine zum Ziel führende Lösung finden konnte.

Ich habe im Excel eine Tabelle (im Grunde ein Formular, jedoch besteht es nur aus normalen Zellen), in der ich per Tabulator also nur bestimmte Zellen ansteuern will. Das habe ich im Moment über den Schutz realisiert. Leider springt Excel nun per Tabulator immer Zeilenweise weiter. Die Eingabezellen für die Adresse sind jedoch beispielsweise untereinander, während man nach Eingabe der Adressdaten wieder in die obere Zeile springen müsste, um weitere Daten einzugeben.´

Was ich also brauche, ist die Möglichkeit, Excel klar zu machen, welche Zellen in welcher Reihenfolge per tabulator erreicht werden sollen. Tabstop und Tabindex lässt sich ja nun für Zellen nicht eingeben (meines Wissens - lasse mich sehr gerne eines Besseren belehren). Soweit ich weiß, geht das irgendwie per Makro, doch wie muss das Makro aussehen und vor allem, wo muss ich das hinschreiben, damit das quasi immer aktiv ist?
Für weiterführende Antworten wäre ich wirklcih dankbar.

Gruß,

Lucas

1 Like

Was ich also brauche, ist die Möglichkeit, Excel klar zu
machen, welche Zellen in welcher Reihenfolge per tabulator
erreicht werden sollen. Tabstop und Tabindex lässt sich ja nun
für Zellen nicht eingeben (meines Wissens - lasse mich sehr
gerne eines Besseren belehren). Soweit ich weiß, geht das
irgendwie per Makro, doch wie muss das Makro aussehen und vor
allem, wo muss ich das hinschreiben, damit das quasi immer
aktiv ist?
Für weiterführende Antworten wäre ich wirklcih dankbar.

Hi Lucas,

kommt u.A. darauf an, wieviele Zellen angesprungen werden dürfen.
Wenn es sehr viele sind empfiehlt sich in einem Hilfsblatt dies (Die zuordnung Von–>Nach) als
Tabelle aufzubauen.
Bei wenigen kan man es im Code unterbringen wie im Beispiel.

In Modul1:

Option Explicit
'
Sub tt()
Application.OnKey "{TAB}", "Huepfe"
End Sub
'
Sub Huepfe()
Dim Von, Nach, N
Von = Array("A1", "A2", "A3", "A4") 'wenn der Cursor hier steht
Nach = Array("A2", "A3", "A4", "B1") 'hüpft er nach dort
For N = 0 To UBound(Von)
 If Von(N) = ActiveCell.Address(0, 0) Then
 Range(Nach(N)).Select
 Exit Sub
 End If
Next N
ActiveCell.Offset(0, 1).Select 'legt fest wohin Tab normalerweise hüpft
End Sub
'
Sub Zurücksetzen()
Application.OnKey "{TAB}", ""
End Sub

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für die schnelle Antwort. Das hört sich sehr gut an und funktioniert bestimmt. Ich habe das also jetzt zum Test erstmal in eine andere Arbeitsmappe eingebaut. Der Code steht jetzt im Modul1. Leider hüpft der Curser trotzdem ganz normal. Ich schätze mal, dass dieser Code einfach noch nicht aktiv ist, oder? Normalerweise wird ein Makro ja erst per Klick oder Tastenkombi aktiviert. Dieses Makro soll ja aber quasi immer aktiv sein. Wie geht das? Geht das überhaupt?

Gruß,

Lucas

P.S.: Ich sehe das doch richtig, dass ich dann nur die in den Klammern angegebenen Zellen beliebig verändern und ergänzen muss, damit das Ganze auf mein Formular passt?

Hallo Lucas,
Ich sehe das so:
Der Code von Reinhard steht in Modul1.
Damit das Makro „tt“ ausgelöst wird, musst du unter „Tabelle1“ noch einfügen:

Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
tt
End Sub

Versuchs mal, aber Reinhard wird dir wohl noch kompetent antworten!
Bei mir läuft es so
Erich

Hi Lucas,

vielen Dank für die schnelle Antwort. Das hört sich sehr gut
an und funktioniert bestimmt. Ich habe das also jetzt zum Test
erstmal in eine andere Arbeitsmappe eingebaut. Der Code steht
jetzt im Modul1. Leider hüpft der Curser trotzdem ganz normal.
Ich schätze mal, dass dieser Code einfach noch nicht aktiv
ist, oder? Normalerweise wird ein Makro ja erst per Klick oder
Tastenkombi aktiviert. Dieses Makro soll ja aber quasi immer
aktiv sein. Wie geht das? Geht das überhaupt?

:smiley:ieses Makro soll ja aber quasi immer aktiv sein.“

„immer aktiv“ ist vieldeutig. Sollen diese festgelegten Tabsprünge nur für die Dateien gelten in denen der Code steht, so nimm das Codebeispiel im Anhang.
(Ich habe es jetztnicht getestet, könnte auch sein daß es dann für alle gerade geöffneten Dateien gilt, halt ausprobieren)

Soll es für jede neue Datei gelten die man erstellt so muß man anders vorgehen, soll es für alle Dateien, egal wie alt oder jung gelten muß man noch anders vorgehen.
Je größer der Geltungsbereich desto schwieriger wird es.

P.S.: Ich sehe das doch richtig, dass ich dann nur die in den
Klammern angegebenen Zellen beliebig verändern und ergänzen
muss, damit das Ganze auf mein Formular passt?

Genau, für jede „Von“ muß es eine „Nach“ Zelle geben. Wie gesagt, wenn es zuviele werden und den Code sprengen, ein (ausgeblendetes) Hilfsblatt wo in A die Von-Zellen und in B die Nach-Zellen stehen.
Man holt sich dann die Werte über Sverweis, der in Vba Vlookup heißt, aber das Gleiche ist.

Gruß
Reinhard

Code in Modul1 anpassen auf deine Zelladressen.

Alt+F11, Doppelklick auf " DieseArbeitsmappe", nachfolgenden Code einfügen:

Private Sub Workbook_Open()
Call tt
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Zurücksetzen
End Sub

Vielen, vielen Dank!

Der entscheidende Üunkt war das mit dem Doppelklick auf „diese Arbeitsmappe“. Jetzt funktioniert das alles perfekt…

Gruß,
Lucas

Hallo Reinhard,
Dein Beitrag ist zwar schon länger her aber vielleicht siehst Du meine Frage.
Dein Code funktioniert wunderbar, aber wie sähe dir Lösung über eine Hilfstabelle aus (ich habe leider wenig Kenntnisse von Vba)?
Ich möchte in einer nicht gesperrten Tabelle mit Tab eine bestimmte Zellenreihenfolge ansteuern (sind über 200 Zellen) daher wäre eine Hilfstabelle die ich in einem anderen Blatt der Mappe erstellt habe gut (in Spalte A sind die VON Zellen, in Spalte B die NACH Zellen) Wie sieht dann der Code aus? Für Hilfe wäre ich dankbar.
Gruß
Silke