Office: Tabtaste deaktivieren

Helfe beim Thema Tabtaste deaktivieren in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich bin's mal wieder mit einer banalen Frage, aber bei funktioniert das nicht Ich möchte im Formular die Tabtaste "ausschalten", also habe ich... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Anna Karl, 17. April 2025.

  1. Tabtaste deaktivieren


    Hallo, ich bin's mal wieder mit einer banalen Frage, aber bei funktioniert das nicht

    Ich möchte im Formular die Tabtaste "ausschalten", also habe ich folgende Sub geschrieben:
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 9 Then
    KeyCode = 0
    End If
    End Sub


    Nur es ändert sich nichts! Ich hüpf immer noch von feld zu Feld !?
     
    Anna Karl, 17. April 2025
    #1
  2. andyfau
    andyfau Erfahrener User
    Hallo Anna,

    wenn Du einen Keycode in einem Textfeld abfangen möchtest musst Du das Ereignis dort auswerten.

    Code:
    Private Sub Feldname_KeyDown(KeyCode As Integer, Shift As Integer)  'Tab - Taste unterdrücken
     If KeyCode = 9 Then
        DoCmd.CancelEvent
     End If
    End Sub
     
    andyfau, 17. April 2025
    #2
  3. d'r Bastler
    d'r Bastler Erfahrener User
    Moin allerseits,

    nur als dusselige Frage eines definitivnichtaccessors: Das Textfeld befindet sich in einer Userform? Gibt es dort die Eigenschaft für jedes Control TabStop ja/nein?.

    In XL ließe sich das dann über eine Schleife in der Userform_Init/activate abschalten.

    Sinngemäß: Wenn Controltype = TextBox dann .TabStop = false ... oder so ähnlich.

    Schöne Grüße
     
    d'r Bastler, 18. April 2025
    #3
  4. Tabtaste deaktivieren

    Hallo Euch beiden!
    Ich habe das Problem, dass ich die Tabtaste in der gesamten Form dekativieren will, weil ich das Phänomen habe, dass es bei der Navigation mit Tab plötzlich zum Speichern des Datensatzes (der aber leer ist) kommt, und ich nicht weiß wieso.
    Die Form enthält Kombinationsfelder, ein Textfeld und Buttons für Löschen, Speichern und Form schliessen. Alle sind mit VBA und nicht mit Makros ereignisgesteuert.
    Da stellt sich für mich die Frage: Löst eine Tab, wenn es auf einen Button springt dessen Ereignis aus? Dann könnte ich nur bei diesem Controlobject dieTab deaktivieren.
     
    Anna Karl, 21. April 2025
    #4
  5. d'r Bastler
    d'r Bastler Erfahrener User
    Moin Anna,

    selten genug dass ich vermute, dass (zumindest ich) das Problem nur sinnvoll angehen kann, wenn Du den Code der Userform hier mal hochlädst. Leider ist das für den Export-Code etwas aufwändig, aber dann könnte man auch die Userform mal besichtigen.

    Dann würde sich vielleicht auch der Satz verstehen lassen: "Alle sind mit VBA und nicht mit Makros ereignisgesteuert."
    Nur zu - irgendwie lässt sich das lösen ...

    Grüße
     
    d'r Bastler, 21. April 2025
    #5
  6. d'r Bastler
    d'r Bastler Erfahrener User
    Okay - the other way round ...
    Bau Dir eine Userform, die ein paar Textboxen und einen Togglebutton enthält. Der verpasst Du dann folgenden Code:

    Code:
    Option Explicit
    
    Private Sub UserForm_Activate()
    Dim ctr As Control
        For Each ctr In Controls
            If Left(TypeName(ctr), 4) = "Text" Then
                ctr.TabStop = False
            End If
        Next
        TextBox1.SetFocus
        ToggleButton1 = False
    End Sub
    
    Private Sub ToggleButton1_Click()
    Dim ctr As Control
    
    If ToggleButton1 = True Then
        For Each ctr In Controls
            If Left(TypeName(ctr), 4) = "Text" Then
                ctr.TabStop = True
            End If
        Next
    Else
        For Each ctr In Controls
            If Left(TypeName(ctr), 4) = "Text" Then
                ctr.TabStop = False
            End If
        Next
    End If
    
        TextBox1.SetFocus
    End Sub
    USF starten, tabsen, toggeln und staunen Tabtaste deaktivieren *;)*
    Damit sollte sich wohl auch in AC Dein Thema [entsprechend angepasst] lösen lassen.

    Grüße
     
    d'r Bastler, 21. April 2025
    #6
  7. andyfau
    andyfau Erfahrener User
    Hallo Anna,
    ein Datensatz wird in Access immer dann gespeichert, wenn das letzte Feld in der Tab-Reihenfolge verlassen wird und der Poiniter dann zum nächsten Datensatz springt. Dies ist auch dann der Fall, wenn das Feld über die Pfeiltasten verlassen wird.
    Sperrst Du das letzte Feld, geht der Effekt auf das vorletzte Feld über. Es ist also ziemlicher Unfug das über Tastenprüfungen zu steuern.

    Wenn Du lediglich das Speichern eines "leeren" Datensatzes verhindern möchtest, ist es doch sinvoller den Datensatz, bzw. seine Felder im Formularereignis "Vor Aktualisierung" (Before_Update) auf Inhalt und Gültigkeit zu prüfen und dann im Fehlerfall das Speichern mit "DoCmd.CancelEvent" abzubrechen. Dann bleibt der Datensatzpointer im selbigen Satz und Du bist sicher, dass die eingegebene Daten im Fall der Speicherung Deinen Vorstellungen entsprechen.

    @d'r Bastler: In diesem Zusammenhang ist zu beachten, dass Access eben NICHT Excel ist. Das VBA ist zwar in weiten Teilen gleich, aber das Objektmodell und die Eventsteuerung, z.B. bei Userforms unterscheiden sich schon ziemlich.
     
    Zuletzt bearbeitet: 21. April 2025
    andyfau, 21. April 2025
    #7
    1 Person gefällt das.
  8. Tabtaste deaktivieren

    Hallo andyfau,
    na jetzt weiß ich wenigstens, wieso ein leerer DS gespeichert wird. Wie frage ich aber alle Felder im Before_Update alle Felder nach "IstNichtNull" ab?
     
    Anna Karl, 21. April 2025
    #8
  9. andyfau
    andyfau Erfahrener User
    Es reicht doch ein Feld, welches auf keinen Fall leer sein darf. Außerdem gibt es in den Feldeigenschaften "Gültigkeitregel" und "Gültigkeitsmeldung".
    Ansonsten mit VBA
    Code:
    If Not IsNull(Me.Feldname) And Me.Feldbame <> "" Then
       msgbox "alles gut"
    End If
     
    andyfau, 21. April 2025
    #9
  10. andyfau, dann hab ich zu kompliziert gedacht - DANKE!!
     
    Anna Karl, 21. April 2025
    #10
    1 Person gefällt das.
  11. d'r Bastler
    d'r Bastler Erfahrener User
    Moin andy,
    dass AC N I C H T XL ist und es Unterschiede gibt, ist mir durchaus bewusst, weswegen ich bei AC Themen auch eher Fragen stelle, die dem Schema "um die Ecke denken" entsprechen. Angeblich - so sagen mir berufenere Quellen als ich - soll aber folgender Code in einer AC Form durchaus funktionieren. Und s o w e i t weg, wäre der ja dann doch nicht.

    Code:
    Option Explicit
    
    Private Sub Form_Activate()
        Dim ctrl As Control
        For Each ctrl In Me.Controls
            If Left(TypeName(ctrl), 4) = "Text" Or Left(TypeName(ctrl), 4) = "Togg" Then
                ctrl.TabStop = False
            End If
        Next ctrl
        Me.TextBox1.SetFocus
        Me.ToggleButton1.Value = False
    End Sub
    
    Private Sub ToggleButton1_Click()
        Dim ctrl As Control
       
        If Me.ToggleButton1.Value = True Then
            For Each ctrl In Me.Controls
                If Left(TypeName(ctrl), 4) = "Text" Then
                    ctrl.TabStop = True
                End If
            Next ctrl
        Else
            For Each ctrl In Me.Controls
                If Left(TypeName(ctrl), 4) = "Text" Then
                    ctrl.TabStop = False
                End If
            Next ctrl
        End If
       
        Me.TextBox1.SetFocus
    End Sub
    
    Über den Toggle wird ausgewählt ob nur die TextBoxen einen TabStop haben, oder nichts.
    Freue mich, wenn's funktioniert- falls nicht: wieder was gelernt Tabtaste deaktivieren *;)*
    Schöne Grüße
     
  12. Hallo!
    Ich habs mit der Gültigkeitsregel "ist null" probiert, da passiert nichts - es erscheint auch kein Meldungstext.
    in VBA hab ich den Code in allen Varianten probiert:
    Das Feld ist ein Tabellen-textfeld und wenn ich das Feld im Lostfocus-Ereignis abfrage ob es NULL oder leer ist funktioniert es, ABER die Meldung kommt auch wenn ich das Fenster aus einem anderen Fenster aufrufe!

    Private Sub InfText_LostFocus()
    If IsNull(InfText.Value) Or InfText.Value = "" Then
    MsgBox "Da fehlt das Wichtigste!"
    InfText.SetFocus
    End If
    End Sub

    Ich wollte auch, dass das Textfeld wieder den Focus bekommt, wenn ich das Feld verlasse - nix!
    Ich hab's auch im BeforeUpdate-Ereignis des folgenden Feldes probiert - bringt auch nichts!
     
  13. andyfau
    andyfau Erfahrener User

    Tabtaste deaktivieren

    Hallo @d'r Bastler,
    der Code funktioniert, keine Frage. Ich wollte Dir nicht zu nahe treten.

    Mir ging es eher darum die Verarbeitung von Daten als grundlegend zwischen Excel und Access verschieden darzustellen.
    In Excel findet das Meiste in den Tabellen direkt statt (Formeln, Summen, etc). Ein Userform wird ja mehr oder weniger nur darübergelegt.
    Eine Datenbank lebt von Tabellen und ihren Beziehungen untereinander, was in Excel herzustellen sehr aufwendig, wenn nicht gar unmöglich ist. In den Tabellen wird tunlichst nicht gerechnet, konsolidiert und analysiert. Dazu gibts die Abfragen, Dynasets und Recordsets. Erst dann kommen Formulare und Reports ins Spiel.

    Grundlegend ist der Speichermechanismus eben auch völlig anders. In Excel wird immer die gesamte Tabelle gespeichert und das erst explicit wenn der der Anwender es sagt. (von Sicherheitszwischenspeicherung mal abgesehen). Access speichert immer datensatzweise und das auch schon beim internen Satzwechsel, ohne weiteres Zutun des Anwenders.
     
    1 Person gefällt das.
  14. andyfau
    andyfau Erfahrener User
    Du fragst da offensichtlich ein Tabellen- oder Abfragefeld ab und nicht das Formularfeld. Das müsste doch mit "Me." beginnen.
     
  15. Hallo andyfau, ja ich habe in einer Form die gebundenen Felder eingefügt. Im Detailbereich habe ich das Textfeld InfText eingefügt. Das Feld muß auf alle Fälle ausgefüllt werden.
    Meine Überlegung: 1. wenn das Feld verlassen wird, 2. wenn das folgende Feld mit Tab angesteuert wird, soll der Inhalt geprüft werden. Es funktioniert ja bei InfText_Lostfocus. Aber wenn ich aus meiner Hauptform das Erfassungsform aufrufe erscheint schon der Hinweistext aus der Msgbox - und ich weiß nicht warum. Mein Erstes Feld das nach dem Öffnen angesprungen wird ist das Titelfeld "infTitel"
     
Thema:

Tabtaste deaktivieren

Die Seite wird geladen...
  1. Tabtaste deaktivieren - Similar Threads - Tabtaste deaktivieren

  2. Kontextmenü global deaktivieren

    in Microsoft Access Hilfe
    Kontextmenü global deaktivieren: Hallo, ich mal wieder Meine Vereins-DB ist für die Anwender soweit zum Test freigegeben. Ich möchte aber das Kontextmenü deaktivieren, sodaß niemand in die Entwurfansicht umschalten kann. In der...
  3. Excel per Button Speichern und Schliessen und "X - Button" deaktivieren

    in Microsoft Excel Hilfe
    Excel per Button Speichern und Schliessen und "X - Button" deaktivieren: Guten Morgen zusammen, ich suche nach einem VBA-Code (unter Office 365), um das Schließen einer Excel-Datei über das "Rote X" oben rechts zum Einen zu verhindern und statt dessen zum Anderen den...
  4. Tabelle in jedem Dokument

    in Microsoft Word Hilfe
    Tabelle in jedem Dokument: Hi, ich habe heute Mittag in einem Word-Dokument eine Tabelle eingefügt. Jetzt ist - quasi als Standard-Einstellung - in jedem neu geöffneten Dokument eine solche Tabelle[IMG] , die ich leider...
  5. Silbentrennung automatisch deaktivieren in blauem Text

    in Microsoft Word Hilfe
    Silbentrennung automatisch deaktivieren in blauem Text: Hallo Forum, ich hätte gerne eure Hilfe bei folgender Fragestellung: Ich erstelle in WORD häufig Tutorials zum Programmieren, üblicherweise in JAVA. Fließtext mit Erläuterungen und...
  6. Extras, Optionen, Ansicht, Platzhalter für Grafiken deaktivieren

    in Microsoft Word Hilfe
    Extras, Optionen, Ansicht, Platzhalter für Grafiken deaktivieren: In meinem Word 2010 sowie 365 fehlt das Menu: Extras. Dort müsste lt. einer Empfehlung Optionen, Ansicht "Platzhalter für Grafiken deaktivieren" sein. Das finde ich aber nicht. Wieso fehlt hier...
  7. Teams Anzeige Zeitzone deaktivieren

    in Microsoft Teams Hilfe
    Teams Anzeige Zeitzone deaktivieren: Hallo zusammen, ich habe heute gesehen, dass wenn ich in einer Besprechung auf das Profil eines Teilnehmers gehe, bei diesem angezeigt wird in welcher Zeitzone er sich befindet. Hat jemand eine...
  8. Telefonfunktion deaktivieren

    in Microsoft Teams Hilfe
    Telefonfunktion deaktivieren: Guten Tag, wir verwenden auch die Telefonfunktion von MS-Teams, auch zum Telefonieren mit externen Anschlüssen. Niemand bei uns hat mehr einen kabelgebunden Telefonapparat. Am Arbeitsplatz läuft...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden