Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tab-Reihenfolge in nicht gesperrten Zellen

Tab-Reihenfolge in nicht gesperrten Zellen
Ingo
Hallo
Ich habe mir mit Excel ein Rechnungsformular erstellt.
Dabei habe ich alle Zellen gesperrt,
in die nichts eingetragen werden sollen.
Der Blattschutz ist an.
Wenn ich nun mit der Tab-Taste von Zelle zu Zelle springe,
werden ja nur die Zellen angesprungen,
dich ich vorher nicht gesperrt habe.
Meine Frage ist nun, ob man die Reihenfolge beeinflussen kann,
in der die Zellen per Tab-Taste angesprungen werden.
Weiss das jemand von Euch ?
Und wenn ja, wie geht denn das ?
Über Hilfe freut sich immer
Ingo aus Münster
Anzeige
AW: Tab-Reihenfolge in nicht gesperrten Zellen
DieterB
Hallo Ingo aus Münster :-))
unter Extras, Optionen, Bearbeiten kannst du die Markierung
in die 4 "Himmelsrichtungen" verschieben.
Ich weiß nicht, ob es das ist was Du willst.
gruß
DieterB
(aus Hamburg)
Nein, das war es nicht, was ich meinte.
Ingo
Lieber Dieter B aus Hamburg :)
Nein, das war es nicht, was ich meinte.
Ich meinte die Reihenfolge der Zellen,
beim Verwenden der Tabulator-Taste.
Gruß
Ingo
Anzeige
Das habe ich befürchtet.
DieterB
Hallo Ingo,
die Tab-tasten springen immer nach rechts.
Leider habe ich in der Hilfe auch nix dazu gefunden.
gruß
Dieter
AW: Tab-Reihenfolge in nicht gesperrten Zellen
Ingo
Lieber Jörg
Ich habe mir das Ding vom Sepp mal angesehen.
Da ich aber leider keine gute Ahnung vom VBA habe,
kapier ich das nicht so ganz :)
Kann man nicht einen VBA-Code schreiben,
wo einfach alle Zellen hintereinander angegeben sind,
in genau der Reihenfolge,
in der sie auch per TAB und ENTER angesprungen werden sollen ?
Wenn mir da noch jemand helfen könnte,
würde ich mich wirklich riesig freuen :)
Gruß
Ingo
Anzeige
ich kann es nicht o.T.
Jörg
AW: Tab-Reihenfolge in nicht gesperrten Zellen
K.Rola
Hallo,
gib mal ein reales Szenario, sprich, eine Zellreihenfolge vor,
sonst bekommst du mit deinen VBA- Kenntnissen Probleme beim
Anpassen des Codes.
Gruß K.Rola
AW: Tab-Reihenfolge in nicht gesperrten Zellen
Ingo
Lieber K.Rola
F9
B11
F11
F12
F13
F15
B18
C D E 52 53 54 (Ich habe diese 9 Zellen zsammengefügt)
F58
Gruß
Ingo
Anzeige
AW: Tab-Reihenfolge in nicht gesperrten Zellen
K.Rola
Hallo,
"C D E 52 53 54 (Ich habe diese 9 Zellen zsammengefügt)"
ist nicht eindeutig, bitte mal etwas genauer.
Gruß K.Rola
AW: Tab-Reihenfolge in nicht gesperrten Zellen
Ingo
Hallo
Diesen "Zellenblock":
C52 D52 E52
C53 D53 E53
C54 D54 E54
habe ich mit "Zusammenführen und Zentrieren"
sozusagen zu einer Zelle gemacht.
Gruß
Ingo
Anzeige
Sorry, aber es klappt noch nicht.
Ingo
Hallo nochmal
Leider klappt noch nicht.
Ich habe nun alles folgendermassen eingefügt ...
Diese Arbeitsmappe:
-------------------

Private Sub Workbook_Open()
Sheets("Tabelle1").Activate
End Sub

Tabelle1 (Tabelle1):
--------------------

Private Sub Worksheet_Activate()
[f9].Select
Application.OnKey "{TAB}", "Makro1"
End Sub


Private Sub Worksheet_Deactivate()
Application.OnKey "{TAB}"
End Sub

Modul1:
-------
Option Explicit
Option Base 1
Dim intIndex As Integer
Sub Makro1()
Dim arr
intIndex = intIndex + 1
arr = Array("f9", "b11", "f11", "f12", "f13", "f15", "b18", "C52", "D52", "E52", "C53", "D53", "E53", "C54", "D54", "E54", "f58")
Range(arr(intIndex)).Select
If intIndex = 17 Then intIndex = 0
End Sub
Aber es sill noch nicht funktionieren.
Da ich selber von VBA leider keine große Ahnung habe,
würde ich mich riesig freuen, wenn Du mir sagen kön ntest,
was ich da noch falsch mache :)
Gruß aus Münster
Ingo
Anzeige
AW: Sorry, aber es klappt noch nicht.
Jörg
Hallo Ingo,
in Tabelle 1
[f9].Select 'hier für f9 die erste Zelle eingeben die markiert sein soll, wenn das Blatt aktiviert wird.
In Modul1
arr = Array("b11", "b18", "f9", "f11", "f12", "f13", "f15", "C52", "f58") 'dies in die richtige Reihenfolge bringen, die angesprungen werden soll, für den Block verbundener Zellen nur "C52" (linke obere Ecke des Verbunds)
Range(arr(intIndex)).Select
'-------------------------------------------------
'Nur als Demo, kann weg!
'ActiveCell = ActiveCell.Address(0, 0)
'-------------------------------------------------
If intIndex = 17 Then intIndex = 0 ' hier von 17 auf 9 ändern, da C52:E54 verbunden sind.
End Sub
Gruss Jörg
Anzeige
AW: Sorry, aber es klappt noch nicht.
Ingo
Hallo nochmals
Es funktioniert leider immer noch nicht.
Zur Veranschaulichung habe ich Dir mal eine kleine
Excel-Tabelle hochgeladen:
https://www.herber.de/bbs/user/4533.xls
Da habe ich Deinen Code mal mit nur 4 Zellen ausprobiert.
Die Zellen sollen in dieser Reihenfolge angesprungen werden:
B20
B20
B21
A21
Genauso habe ich die Reihenfolge auch in den VBA-Code geschrieben.
Aber sie werden in der ganz normalen Standard-Reihenfolge angesprungen:
B20
B20
A21
B21
Leider weiss ich immer noch nicht genau, was ich da falsch mache :)
Gruß
Ingo
Anzeige
AW: Sorry, aber es klappt noch nicht.
Jörg
Hallo Ingo,
das Makro

Private Sub Workbook_Open()
Sheets("Tabelle1").Activate
End Sub

funktioniert erst, wenn die Mappe mindestens zwei Tabellenblätter enthält, bei nur einem Tabellenblatt wird es nicht ausgeführt, ich kann es nicht erklären, wahrscheinlich, weil eine einzelne Tabelle sowieso schon aktiv ist und darum nicht aktiviert werden kann.
Mit Menü Einfügen, Tabellenblatt, ein weiteres Tabellenblatt einfügen, dann funktioniert es.
Gruss Jörg
Anzeige
Zusatz
Jörg
Hallo Ingo,
einmal Tabellenblatt2 dann wieder Tabellenblatt1 klicken, hab ich vergessen zu schreiben.
Oder Mappe mit zwei Tab3ellenblättern speichern, schliessen und neu öffnen.
Gruss Jörg
AW: Zusatz
Ingo
Lieber Jörg
Soweit funtioniert es nun erstmal ... vielen Dank für Deine Mühe !
Aber dass man noch ein zweites Tabellenblatt anlegen muss,
und dass man vorher einmal auf Tabellanblatt 2 klicken muss,
finde ich leider recht lästig :)
Gibt es nicht ne Lösung für mein grundsätzliches Anliegen
(Tabulator-Reihenfolge ändern), ohne dass ich erst noch in
irgendwelche Dummy-Tabellenblätter klicken muss ?
Falls Du, lieber Jörg, oder Ihr anderen da noch einen anderen Lösungsansatz wisst,
würde ich mich riesig über Eure Hilfe freuen :)
Gruß aus Münster
Ingo
Anzeige
AW: Zusatz
Ulf
Was genau ist dein Problem, die Lösung als solche funktioniert doch, oder?
Ulf
AW: Zusatz
Ingo
Lieber Ulf
Ich hatte doch im vorherigen Posting geschrieben,
wo mein "Problem" ist :)
Es ist mir zu umständlich, erst in ein anderes leeres Tabellenblatt
und dann wieder in meine Rechnung klicken zu müssen.
Ich möchte die Rechnung.xls einfach aufrufen und sofort meine
Daten eintragen können, ohne erst noch "woanders" herumklicken zu müssen.
Hast Du denn vielleicht ne Idee, wie man das lösen kann ?
Auch über Deine Hilfe würde ich mich sehr freuen :)
Hruß
Ingo
Anzeige
Nur getrickst
Jörg
Hallo Ingo,
ich habe das Hin- und Herklicken automatisiert.
Die Änderung ist im Workbook_Open Modul, das jetzt so aussieht:

Private Sub Workbook_Open()
Worksheets("Tabelle2").Activate
Worksheets("Tabelle1").Activate
End Sub

Damit ist sichergestellt, dass das Worksheets("Tabelle1").Activate auch wirklich ausgelöst wird.
Um das Dummyblatt kommst Du aber nicht herum, zumindest weiss ich nicht wie.
Es lässt sich aber ausblenden im Eigenschaftenfenster im VBA Editor
Visible xlSheetVeryHidden
Hier die Datei, die Eingabereihenolge stimmt wahrscheinlich nicht für dich (im Array in Modul1 zu ändern):
https://www.herber.de/bbs/user/4549.xls
Gruss Jörg
Anzeige
DANKE ... genau so klappts ! ... (o.T.)
Ingo
und schon wieder eine Frage dazu :-)
Ingo
Lieber Jörg
Das von Dir beschriebene hat ja gut funktioniert.
Nun habe ich meine Rechnung in eine Arbeitsmappe mit mehrenen anderen Tabellen eingefgt.
Auch die Dummy-Tabelle habe ich da mit "rüber" genommen.
die Rechnung ist nun also Tabelle16
und die Dummy-Tabelle ist Tabelle17
Somit steht nun unter "Diese Arbeitsmappe" folgendes:

Private Sub Workbook_Open()
Worksheets("Tabelle17").Activate
Worksheets("Tabelle16").Activate
End Sub

Wenn ich aber nun die ganze Arbeitsmappe starte, kommt folgende Fehlermeldung:
"Laufzeitfehler '9': Index außerhalb des gültigen Bereichs"
Was hat denn das nun zu bedeuten ?
Was habe ich falsch gemacht ?
Kannst Du mir da doch nochmal helfen bitte :)
Gruß
Ingo
Anzeige
AW: und schon wieder eine Frage dazu :-)
Jörg
Hallo Ingo,
entweder
Worksheets("Tabellenblattname").Activate
oder
Worksheets(1).Activate
Wobei 1 hier eine Indexnummer ist, abhängig von der Reihenfolge, wie die Tabellen in der Mappe liegen. Von links nach rechts.
Schau mal im VBA-Editor
Da könnte z.B. im Projekt Explorer stehen Tabelle3("Rechnung") dass heisst:
Zeitlich dritte eingefügte Tabelle
Tabellenblattname Rechnung
Diese Tabelle hat trotzdem Index Nummer 1, wenn sie im Register ganz links liegt.
Eine Dummytabelle brauchst Du bei 16 Blättern nicht mehr, spring einfach ein vorhandenes Tabellenblatt an und wieder zurück.
Gruss Jörg
Anzeige
HURRAAAAAA !!
22.03.2004 17:36:10
Ingo
Lieber Jörg
Ick könnt Dir küssen :))
Nun gehts wunderbar.
Nun hab ich das auch einigermassen begriffen :)
Vielen lieben Dank nochmal für Deine Geduld mit mir !
Gruß aus Münster
Ingo Siemon
AW: Sorry, aber es klappt noch nicht.
K.Rola
Hallo,
das mit den verbundenen Zellen hab ich gar nicht gecheckt.
Lies mal den Hinweis von Jörg.
Nur die erste Zelle der verbundenen Zellen darf im Array stehen.
Gruß K.Rola
Anzeige
verständniss frage
DieterB
Warum willst Du die Reihenfolge ändern?
gruß
Dieter
AW: verständniss frage
Ingo
Lieber Dieter
Weil ich gewohnheitsmässig die Daten gerne
in einer ganz bestimmten Reihenfolge eingebe.
Und diese ist eben eine andere als es die entsprechenden
Felder meiner Rechnung sind.
Gruß
Ingo
Wenn man jetzt wüsste.......
DieterB
.... wie die Tabelle aufgebaut ist?
gruß
Dieter
Anzeige
AW: Hier mal eine Muster-Datei ...
Ingo
Lieber Bernd
Hier habe ich die entsprechenden Tabelle mal hochgeladen:
https://www.herber.de/bbs/user/4541.xls
Ich habe die Zellen gelb markiert,
die per Tabulator-Taste angesprungen werden sollen.
In die entsprechenden Zellen habe ich auch Zahlen
in roter Schrift geschrieben,
damit Du die Reihenfolge siehst,
in der die Zellen per Tabulator-Taste angesprungen werden sollen.
Meinst Du, das ist lösbar ?
Über Deine Hilfe würde ich mich natürlich riesig freuen :)
Gruß
Ingo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Tab-Reihenfolge in nicht gesperrten Zellen ändern


Schritt-für-Schritt-Anleitung

Um die Tab-Reihenfolge in nicht gesperrten Zellen in Excel festzulegen, kannst du VBA (Visual Basic for Applications) nutzen. Hier ist eine einfache Anleitung:

  1. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul erstellen:

    • Klicke mit der rechten Maustaste auf "VBAProject (dein Dokumentname)" und wähle Einfügen > Modul.
  3. VBA-Code einfügen:

    • Kopiere den folgenden Code in das neue Modul:
    Option Explicit
    Dim intIndex As Integer
    
    Sub Makro1()
       Dim arr
       intIndex = intIndex + 1
       arr = Array("F9", "B11", "F11", "F12", "F13", "F15", "B18", "C52", "D52", "E52", "C53", "D53", "E53", "C54", "D54", "E54", "F58")
       Range(arr(intIndex)).Select
       If intIndex = UBound(arr) Then intIndex = -1 ' Zurücksetzen auf den ersten Index
    End Sub
  4. Workbook_Open-Ereignis hinzufügen:

    • Füge den folgenden Code in das "Diese Arbeitsmappe"-Modul ein:
    Private Sub Workbook_Open()
       Sheets("Tabelle1").Activate
       Application.OnKey "{TAB}", "Makro1"
    End Sub
  5. Arbeitsmappe speichern und testen:

    • Speichere die Arbeitsmappe als .xlsm (Makro-fähige Arbeitsmappe) und teste die Tab-Reihenfolge.

Häufige Fehler und Lösungen

  • Fehler: "Excel Tab funktioniert nicht"

    • Überprüfe, ob die Makros aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und aktiviere die Makros.
  • Index außerhalb des gültigen Bereichs:

    • Dieser Fehler tritt auf, wenn du versuchst, auf einen nicht existierenden Index im Array zuzugreifen. Stelle sicher, dass die Anzahl der Elemente im Array korrekt ist.
  • Tab-Reihenfolge funktioniert nicht wie erwartet:

    • Überprüfe, ob die Zellen tatsächlich nicht gesperrt sind und dass du die richtige Zellreihenfolge im Array angegeben hast.

Alternative Methoden

Falls VBA für dich nicht in Frage kommt, kannst du die Tab-Reihenfolge in Excel auch über die Zellformatierung ändern:

  1. Zellen schützen:

    • Gehe zu Überprüfen > Blattschutz und wähle die Zellen, die bearbeitet werden dürfen.
  2. Formularsteuerelemente verwenden:

    • Nutze Steuerelemente wie Textfelder oder Dropdown-Listen, um die Eingabereihenfolge zu steuern.

Praktische Beispiele

Ein einfaches Beispiel für die Tab-Reihenfolge könnte so aussehen:

  • Reihenfolge: F9, B11, F11, F12, F13, F15, B18, C52, D52, E52.
  • VBA-Code:

    arr = Array("F9", "B11", "F11", "F12", "F13", "F15", "B18", "C52", "D52", "E52")

Die Zellen in dieser Reihenfolge werden angesprungen, wenn du die Tab-Taste drückst.


Tipps für Profis

  • Verstecke die Dummy-Tabelle:

    • Du kannst die Dummy-Tabelle, die für die Aktivierung benötigt wird, im VBA-Editor verstecken, indem du Visible = xlSheetVeryHidden einstellst.
  • Verwende Kommentare im Code:

    • Kommentiere deinen Code, um die Funktionalität jeder Zeile zu erklären. Das macht es einfacher für dich und andere, den Code zu verstehen.

FAQ: Häufige Fragen

1. Warum kann ich die Tab-Reihenfolge in Excel nicht festlegen? Es kann sein, dass die Zellen gesperrt sind oder die Makros in deinen Excel-Einstellungen deaktiviert sind.

2. Wie kann ich sicherstellen, dass die Reihenfolge beim Tabben beibehalten wird? Verwende den oben genannten VBA-Code und stelle sicher, dass du die richtige Reihenfolge der Zellen im Array angibst.

3. Kann ich die Tab-Reihenfolge auch ohne VBA ändern? Ja, du kannst die Tab-Reihenfolge mithilfe von Formularsteuerelementen und der Zellformatierung anpassen, aber das ist weniger flexibel als VBA.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige