Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

F11 für Nutzer sperren.

Begonnen von thoco, Februar 02, 2025, 12:13:24

⏪ vorheriges - nächstes ⏩

thoco

Ich möchte die F11 Taste für Nutzer sperren, MS Access läuft auf Office 365.

Dazu habe ich folgenden Code verwendet:

Sub DeaktiviereSpezialtasten()
    ' Deaktiviert die Access-Spezialtasten wie F11, STRG+G, ALT+F11
    On Error GoTo Fehler
    Application.SetOption "AllowSpecialKeys", False
    MsgBox "Die Spezialtasten (wie F11) wurden deaktiviert!", vbInformation
    Exit Sub
Fehler:
    MsgBox "Fehler: " & Err.Description, vbCritical
End Sub

Jetzt kommt die Fehlermeldung: AllowSpecialKeys ist kein gültiger Name.

Was muss ich anders machen?



Bitsqueezer

Hallo,

wie gerade erst vor ein paar Tagen beschrieben: Optionen sind in Access nicht per Default vorhanden. Wenn man sie das erste Mal einstellen will, muß man sie erst mit CreateProperty erzeugen.

Siehe auch Beschreibung der Eigenschaft:
https://learn.microsoft.com/de-de/office/vba/access/concepts/miscellaneous/allowspecialkeys-property

Nebenbei gibt es zum Abfangen auch eine andere zuverlässige Methode, die Verwendung des AUTOKEYS-Makros. Hier kann man für jede Taste definieren, was passieren soll und das funktioniert unabhängig von Formularen etc.
https://support.microsoft.com/de-de/topic/ausf%C3%BChren-von-access-makros-mithilfe-einer-tastenkombination-0d267570-d3da-46eb-9bfb-a3c81af676be
https://access-im-unternehmen.de/Das_AutoKeysMakro/

Gruß

Christian

Debus

Hey, ich habe das auch mal gebraucht und hatte da auf VB@archiv gefunden. Es funktioniert und ist einfach einzubauen. Den Code in ein Module:

hier noch der Link zum Artikel:

https://www.vbarchiv.net/tipps/tipp_1173-access-2000-beliebige-tasten-sperren.html

Option Compare Database
Option Explicit

Global KeyCode2 As Integer        ' KeyCode kann hiermit jetzt global verarbeitet werden!
Global Shift2 As Integer          ' Shift (Shift-, Ctrl- und Alt-Taste)
Global K_ARRAY2(20, 1) As Integer    ' Feld für zu sperrende Keys (Dimension ggf. anpassen!)
Global K_ARRAY2_OK As Boolean     ' Merker für Feld

Public Function TastenAbblocken()
' ***** Abblocken von Tasten Für EINZELNE  Steuerelemte: !!! ******
' * - Im EigenschaftsFenster des Steuerelementes :
' *      TasteAb        (.OnKeyDown)  auf  "=TastenAbblocken()"
' *   Im EigenschaftsFenster des Formulars :
' *      Tastenvorschau (.KeyPreview) auf  "Ja"
' *      TasteAb        (.OnKeyDown)  auf  "[Ereignisprozedur]" mit:
' *                KeyCode2 = KeyCode
' *                Shift2 = Shift
' *                Call TastenAbblocken
' *
' * oder besser! :
' * - In Ereignisprozedur (_Sub...KeyDown) des Steuerelementes :
' *                KeyCode2 = KeyCode
' *                Shift2 = Shift
' *                Call TastenAbblocken
' *****************************************************************

    If Not K_ARRAY2_OK Then
        ' nur, wenn globales Key-Array noch nicht gefüllt!
        Dim I As Long
        On Error GoTo ErrHandler

        ' Hier im Feld für abzublockende Keys "K_ARRAY2" die vbKonstanten eintragen!!
        ' K_ARRAY2(1, 0) = vbKeyF1  ' Hilfe kann bleiben...
        'K_ARRAY2(2, 0) = vbKeyF2    ' Objekt umbenennen
        'K_ARRAY2(3, 0) = vbKeyF3
        ' K_ARRAY2(4, 0) = vbKeyF4  ' Kombifeld DropDown
        'K_ARRAY2(5, 0) = vbKeyF5    ' Aktualisieren des Datenbankfensters
        'K_ARRAY2(6, 0) = vbKeyF6
        'K_ARRAY2(7, 0) = vbKeyF7    ' Rechtschreibprüfung
        'K_ARRAY2(8, 0) = vbKeyF8
        ' K_ARRAY2(9, 0) = vbKeyF9  ' F9 ist und bleibt für Aktualisierungen
        'K_ARRAY2(10, 0) = vbKeyF10  ' Aktivieren Menüleiste
        K_ARRAY2(11, 0) = vbKeyF11  ' DatenbankFenster in Vordergrund (->Extras, Start,Weitere)
        'K_ARRAY2(12, 0) = vbKeyF12  ' Objekt speichern ..  !!!!!

        'K_ARRAY2(13, 0) = vbKeyF4   ' STRG F4  geöffnetes Fenster schliessen !
        'K_ARRAY2(13, 1) = acCtrlMask

        'K_ARRAY2(14, 0) = vbKeyF6   ' STRG F6 Wechseln zwischen geöffneten Fenstern
        'K_ARRAY2(14, 1) = acCtrlMask

        'K_ARRAY2(15, 0) = vbKeyF11  ' STRG F11 Benutzerdefinierte <-> eingebaute Menüleiste
        'K_ARRAY2(15, 1) = acCtrlMask

        'K_ARRAY2(16, 0) = vbKeySpace ' ALT LEERTASTE  'Zum Anzeigen des Systemmenüs
        'K_ARRAY2(16, 1) = acAltMask

        'K_ARRAY2(17, 0) = vbKeyF4    ' ALT F4  'ACCESS schliessen !
        'K_ARRAY2(17, 1) = acAltMask
        K_ARRAY2(18, 0) = vbKeyPageUp
        K_ARRAY2(19, 0) = vbKeyPageDown


        'K_ARRAY2_OK = True      ' Merken: globales Key-Array wurde bereits gefüllt!
    End If

    For I = 0 To UBound(K_ARRAY2, 1)
        If K_ARRAY2(I, 0) = KeyCode2 And K_ARRAY2(I, 1) = Shift2 Then
            ' MsgBox K_ARRAY2(i, 0) & "....." & K_ARRAY2(i, 1)
            DoCmd.CancelEvent
        End If
    Next I
    Exit Function

ErrHandler:
    MsgBox Err.Number & "   " & Err.Description
End Function



' ********** Liste von vbKey's (nur Kommentare) ***********************
' Konstante Wert Beschreibung
' vbKeyLButton 0x1 Linke Maustaste
' vbKeyRButton 0x2 Rechte Maustaste
' vbKeyCancel 0x3 ABBRECHEN-TASTE
' vbKeyMButton 0x4 Mittlere Maustaste
' vbKeyBack 0x8 RÜCKTASTE
' vbKeyTab 0x9 TAB-TASTE
' vbKeyClear 0xC ENTF-TASTE
' vbKeyReturn 0xD EINGABETASTE
' vbKeyShift 0x10 UMSCHALTTASTE
' vbKeyControl 0x11 STRG-TASTE
' vbKeyMenu 0x12 MENÜTASTE
' vbKeyPause 0x13 PAUSE-TASTE
' vbKeyCapital 0x14 FESTSTELLTASTE
' vbKeyEscape 0x1B ESC-TASTE
' vbKeySpace 0x20 LEERTASTE
' vbKeyPageUp 0x21 BILD-AUF-TASTE
' vbKeyPageDown 0x22 BILD-AB-TASTE
' vbKeyEnd 0x23 ENDE-TASTE
' vbKeyHome 0x24 POS1-TASTE
' vbKeyLeft 0x25 NACH-LINKS-TASTE
' vbKeyUp 0x26 NACH-OBEN-TASTE
' vbKeyRight 0x27 NACH-RECHTS-TASTE
' vbKeyDown 0x28 NACH-UNTEN-TASTE
' vbKeySelect 0x29 AUSWAHLTASTE
' vbKeyPrint 0x2A DRUCK
' vbKeyExecute 0x2B AUSFÜHREN-TASTE
' vbKeySnapshot 0x2C SNAPSHOT-TASTE
' vbKeyInsert 0x2D EINFG-TASTE
' vbKeyDelete 0x2E LÖSCHEN-TASTE
' vbKeyHelp 0x2F HILFETASTE
' vbKeyNumlock 0x90 NUM-TASTE
'
' Die Tasten A bis Z entsprechen den ASCII-Zeichen A - Z:
' Konstante Wert Beschreibung
' vbKeyA 65 A-TASTE
' vbKeyB 66 B-TASTE
' vbKeyC 67 C-TASTE
' vbKeyD 68 D-TASTE
' vbKeyE 69 E-TASTE
' vbKeyF 70 F-TASTE
' vbKeyG 71 G-TASTE
' vbKeyH 72 H-TASTE
' vbKeyI 73 I-TASTE
' vbKeyJ 74 J-TASTE
' vbKeyK 75 K-TASTE
' vbKeyL 76 L-TASTE
' vbKeyM 77 M-TASTE
' vbKeyN 78 N-TASTE
' vbKeyO 79 O-TASTE
' vbKeyP 80 P-TASTE
' vbKeyQ 81 Q-TASTE
' vbKeyR 82 R-TASTE
' vbKeyS 83 S-TASTE
' vbKeyT 84 T-TASTE
' vbKeyU 85 U-TASTE
' vbKeyV 86 V-TASTE
' vbKeyW 87 W-TASTE
' vbKeyX 88 X-TASTE
' vbKeyY 89 Y-TASTE
' vbKeyZ 90 Z-TASTE
'
' Die Tasten 0 bis 9 entsprechen den ASCII-Zeichen 0 - 9:
' Konstante Wert Beschreibung
' vbKey0 48 0-TASTE
' vbKey1 49 1-TASTE
' vbKey2 50 2-TASTE
' vbKey3 51 3-TASTE
' vbKey4 52 4-TASTE
' vbKey5 53 5-TASTE
' vbKey6 54 6-TASTE
' vbKey7 55 7-TASTE
' vbKey8 56 8-TASTE
' vbKey9 57 9-TASTE
'
' Die folgenden Kontanten repräsentieren die Zahlen auf der Zehnertastatur:
' Konstante Wert Beschreibung
' vbKeyNumpad0 0x60 0-TASTE
' vbKeyNumpad1 0x61 1-TASTE
' vbKeyNumpad2 0x62 2-TASTE
' vbKeyNumpad3 0x63 3-TASTE
' vbKeyNumpad4 0x64 4-TASTE
' vbKeyNumpad5 0x65 5-TASTE
' vbKeyNumpad6 0x66 6-TASTE
' vbKeyNumpad7 0x67 7-TASTE
' vbKeyNumpad8 0x68 8-TASTE
' vbKeyNumpad9 0x69 9-TASTE
' vbKeyMultiply 0x6A MULTIPLIKATIONSZEICHEN-TASTE (*)
' vbKeyAdd 0x6B PLUSZEICHEN-TASTE (+)
' vbKeySeparator 0x6C EINGABETASTE
' vbKeySubtract 0x6D MINUSZEICHEN-TASTE (-)
' vbKeyDecimal 0x6E DEZIMALPUNKT-TASTE (.)
' vbKeyDivide 0x6F DIVISIONSZEICHEN-TASTE (/)
'
' Die folgenden Konstanten repräsentieren die Funktionstasten:
' Konstante Wert Beschreibung
' vbKeyF1 0x70 F1-TASTE
' vbKeyF2 0x71 F2-TASTE
' vbKeyF3 0x72 F3-TASTE
' vbKeyF4 0x73 F4-TASTE
' vbKeyF5 0x74 F5-TASTE
' vbKeyF6 0x75 F6-TASTE
' vbKeyF7 0x76 F7-TASTE
' vbKeyF8 0x77 F8-TASTE
' vbKeyF9 0x78 F9-TASTE
' vbKeyF10 0x79 F10-TASTE
' vbKeyF11 0x7A F11-TASTE
' vbKeyF12 0x7B F12-TASTE
' vbKeyF13 0x7C F13-TASTE
' vbKeyF14 0x7D F14-TASTE
' vbKeyF15 0x7E F15-TASTE
' vbKeyF16 0x7F F16-TASTE




Public Function TastenAbblockenAutoAll(frm1, DO_IT)
' *************** Abblocken von Tasten Für ein GANZES Formular !!! *********
' * - Diese Funktion sollte beim Laden des Formulars aufgerufen werden:
' *        Call TastenAbblockenAutoAll(Me, True)
' *   DO_IT True/False aktiviert/deaktiviert das Abblocken
' *
' * - Ausserdem TasteAb-Ereignis des Formulars :
' *    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
' *    'KeyCode2 = KeyCode
' *    'Shift2 = Shift
' *    'Call TastenAbblocken
' *
' * - Controls, die bereits ein KeyDown-Ereignis eingetragen haben:
' * - Zusätzlich in _Sub...KeyDown des Steuerelementes :
' *                KeyCode2 = KeyCode
' *                Shift2 = Shift
' *                Call TastenAbblocken
' **************************************************************************

    Dim ctl1 As Control

    frm1.KeyPreview = DO_IT          ' Tastenvorschau für's Formular !
    If DO_IT = True Then
        ' frm1.OnKeyDown = "[Ereignisprozedur]" ' Prozedur aktivieren deutsch
        frm1.OnKeyDown = "[Event Procedure]"    ' Prozedur aktivieren englisch 2005-03-07 Rimi
    Else
        frm1.OnKeyDown = ""                     ' Prozedur deaktivieren
    End If

    On Error Resume Next    ' zB. Bezeichnungsfelder uebergehen
    For Each ctl1 In frm1.Controls
        If ctl1.Enabled Then
            If DO_IT = True Then
                If ctl1.OnKeyDown = "" Then     ' nur leere Einträge ändern !
                    ctl1.OnKeyDown = "=TastenAbblocken()"
                End If
            Else
                If ctl1.OnKeyDown = "=TastenAbblocken()" Then   ' nur eigene Eintraege ändern !
                    ctl1.OnKeyDown = ""
                End If
            End If
        End If
    Next ctl1
    On Error GoTo 0    ' Fehlerbehandlung wieder abschalten
End Function


Aufruf dann so

Call TastenAbblocken
Vielleicht hilft das ja

Holger

thoco

Vielen Dank für die Hilfe - ich teste das jetzt und gebe noch eine Rückmeldung.