Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Aktivierreihenfolge in Userform

Aktivierreihenfolge in Userform
15.09.2004 20:52:01
Wolle
Hallo,
wie lege ich die Aktivierreihenfolge für Comboboxen und Textboxen in einem Userform per VBA-Code fest?
Ich habe in einem Userform verschiedene Labels, Comboboxen, Textboxen, Checkboxen und Schaltflächen angelegt. Diese werden nun mittels VBA-Code beschriftet und positioniert. Im VBA-Code weise ich auch jeder Box ihre jeweiligen Eigenschaften zu, auch den TabIndex. Doch leider ignoriert Excel bei manchen Boxen den Wert für den TabIndex und man springt dann beim Betätigen der TAB-Taste wild durch die einzelnen Boxen, jedenfalls nicht nach meiner im VBA-Code festgelegten Reihenfolge.
Ich habe schon die Aktivierreihenfolge per Hand festgelegt, aber das funktioniert nur bei der ersten Anordnung (siehe Bild BV-Kunden.jpg). Da durch andere VBA-Codes die gleichen Boxen anders beschriftet und positioniert werden ändern sich Anzahl, Position und Anordnung, je nachdem welche Textboxen oder Comboboxen gerade benötigt werden. Und dadurch die Reihenfolge!
Vor einigen Tagen habe ich schonmal danach gefragt, aber leider keine Antwort bekommen. Ich hoffe sehr, daß mir diesesmal jemand helfen wird.
Zum besseren Verständnis habe ich 2 Bilder hochgeladen
https://www.herber.de/bbs/user/10931.zip
MfG
Wolle
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktivierreihenfolge in Userform
Reinhard
Hi Wolle,
hast du schon im VB-Editor über Ansicht---Aktivierreihenfolge die Folge eingestellt?
Gruß
Reinhard
AW: Aktivierreihenfolge in Userform
Wolle
Hallo Reinhard,
klar hab ich das. Wie ich geschrieben habe funktioniert das auch, aber nur bei der ersten Anordnung der Boxen. Bei der zweiten Anordnung (siehe Bild BV-Verbrauchsmaterial) sind die Comboboxen und Textboxen in anderer Reihenfolge angeordnet und schon passt die Aktivierreihenfolge nicht mehr. Trage ich nun im VBA-Code den TabIndex für jede Box ein, führt das auch nicht zum richtigen Ergebnis. Excel scheint diese Einträge irgendwie nicht richtig zuzuordnen.
MfG
Wolle
Anzeige
AW: Aktivierreihenfolge in Userform
r.sch.
Hi Wolle,
leg doch alle controls zur Laufzeit an, dann hast du die Parameter im Griff.
Gruß
Reinhard
AW: Aktivierreihenfolge in Userform
Wolle
Hallo Reinhard,
bitte erklär mir das mal genauer.
Ich glaube ich hab den Fehler gefunden. In meinem VBA-Code habe ich wegen der Übersicht erst alle Comboboxen definiert (Position, Größe, Ausrichtung, TabIndex, usw.), dann alle Textboxen. Und genau da scheint der Fehler zu liegen. Wenn ich im Code die verschiedenen Boxen in der selben Reihenfolge, wie sie später per Tabstop aktiviert werden sollen, definiere, dann funktioniert alles.
Danke für die Hilfe
MfG
Wolle
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Aktivierreihenfolge in Userform mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffnen des VBA-Editors: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstellen eines Userforms: Füge ein neues Userform hinzu und platziere die gewünschten Steuerelemente (Labels, TextBoxen, ComboBoxen, etc.).
  3. Einstellen der TabIndex-Eigenschaft:
    • Wähle jedes Steuerelement aus und gehe zu den Eigenschaften.
    • Setze die TabIndex-Eigenschaft für jedes Steuerelement in der Reihenfolge, in der sie aktiviert werden sollen.
  4. Überprüfen der Aktivierreihenfolge:
    • Gehe im VBA-Editor zu Ansicht > Aktivierreihenfolge, um die aktuelle Reihenfolge zu überprüfen.
  5. VBA-Code anpassen:
    • Stelle sicher, dass du im VBA-Code die Steuerelemente in der Reihenfolge definierst, in der sie aktiviert werden sollen:
      ' Beispiel zur Definition der TabIndex
      TextBox1.TabIndex = 0
      TextBox2.TabIndex = 1
      ComboBox1.TabIndex = 2

Häufige Fehler und Lösungen

  • Problem: Excel ignoriert die TabIndex-Werte.

    • Lösung: Überprüfe, ob die Steuerelemente in der richtigen Reihenfolge im Code definiert sind. Die Reihenfolge im Code sollte der gewünschten Aktivierreihenfolge entsprechen.
  • Problem: Aktivierreihenfolge funktioniert nur bei der ersten Anordnung.

    • Lösung: Stelle sicher, dass du alle Steuerelemente zur Laufzeit erstellst und ihre Eigenschaften korrekt zuweist. Dies gibt dir mehr Kontrolle über die Anordnung.

Alternative Methoden

  • Laufzeitgenerierung von Steuerelementen: Anstatt die Steuerelemente im Designmodus zu erstellen, kannst du sie zur Laufzeit erzeugen. Dies ermöglicht es dir, die Eigenschaften wie TabIndex dynamisch zu setzen, was die Verwaltung erleichtert.

    Beispiel:

    Dim txtBox As MSForms.TextBox
    Set txtBox = Me.Controls.Add("Forms.TextBox.1")
    txtBox.TabIndex = 0

Praktische Beispiele

  • Beispiel für eine Userform mit TabIndex: Erstelle ein Userform mit zwei TextBoxen und einer ComboBox. Setze den TabIndex wie folgt:
    TextBox1.TabIndex = 0
    TextBox2.TabIndex = 1
    ComboBox1.TabIndex = 2

    Dies stellt sicher, dass die Benutzer beim Drücken der TAB-Taste in der gewünschten Reihenfolge durch die Felder navigieren.


Tipps für Profis

  • Verwende den VBA-TabIndex: Achte darauf, den tabindex vba in deinem Code konsistent zu verwenden. Dies hilft, Probleme mit der Aktivierreihenfolge zu vermeiden.
  • Dokumentation: Halte eine Dokumentation der Steuerelemente und ihrer TabIndex-Werte bereit, um Missverständnisse zu vermeiden, besonders bei komplexen Userforms.

FAQ: Häufige Fragen

1. Warum ignoriert Excel meine TabIndex-Werte?
Excel kann die TabIndex-Werte ignorieren, wenn die Steuerelemente nicht in der richtigen Reihenfolge im Code definiert sind. Stelle sicher, dass die Reihenfolge im VBA-Code der gewünschten Aktivierreihenfolge entspricht.

2. Wie kann ich die Aktivierreihenfolge zur Laufzeit ändern?
Wenn du die Steuerelemente zur Laufzeit erstellst, kannst du ihre TabIndex-Eigenschaften direkt nach der Erstellung setzen. Dies gibt dir die Flexibilität, die Reihenfolge dynamisch zu ändern.

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