• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

toets blokkeren of uitschakelen

Status
Niet open voor verdere reacties.

tkint

Gebruiker
Lid geworden
5 dec 2011
Berichten
754
Beste,

Kan je om het even dewelke toets blokkeren met de onkey-methode? Bijvoorbeeld vermijden dat men de cijfertoets 5 gebruikt.
 
De RdB-methode heeft toch beperkingen.
Ten eerste moet je het numerieke toetsenbord apart uitschakelen. Ten tweede verhindert onderstaande routine niet dat 5 getypt kan worden in de formulebalk.

In de ThisWorkbook-module:
Code:
Private Sub Workbook_Open()
    Application.OnKey "{101}", "" '5 op het numerieke toetsenbord
    Application.OnKey "5", ""
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "{101}"
    Application.OnKey "5"
End Sub

Als je beperkingen wilt aanbrengen is celvalidatie misschien een betere optie.
 
Laatst bewerkt:
@ Timshel,

Kan je met een vba-code de numlock uitschakelen ipv handmatig? Kan je een msgbox laten verschijnen dat meldt dat de toets uitgeschakeld is?
 
Dat kan met dit in een module (32-bit Office):
Code:
Private Declare Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
    Private Const VK_NUMLOCK = &H90
    Private Const KEYEVENTF_KEYUP = &H2
    Declare Function GetKeyState Lib "user32.dll" ( _
    ByVal nVirtKey As Long) As Integer

Sub NUM_Off() 'Turn NUM-Lock off
    If (GetKeyState(vbKeyNumlock) = 1) Then
        keybd_event VK_NUMLOCK, 1, 0, 0
        keybd_event VK_NUMLOCK, 1, KEYEVENTF_KEYUP, 0
    End If
    MsgBox "NUMLOCK is uit"
End Sub
 
Dat kan. Met bovenstaande code van Edmoor bijvoorbeeld.
Maar wat heb je eraan? Je kunt toch ook gewoon op de numlock-toets drukken?
De gebruiker kan de numlock eenvoudig weer aanzetten dus het vormt geen enkele belemmering.
 
Beste Edmoor en Timshel,

Ik probeer de code straks uit en post mijn bevindingen. Bedankt.
 
Waarom zou je dit willen ?

Je creëert hiermee vaak meer problemen dan je oplost.
 
Beste,

Ik heb eerder dit onderwerp gepost en kreeg de raad om mijn blad te beveiligen en bij iedere schrijfactie te ontgrendelen en te vergrendelen. Maar die aanpak lukte mij niet. Vandaar het idee om toetsen te blokkeren.
 
Ik zie dat je weet hoe je een userform kunt gebruiken.
Dan wordt het heel simpel: gebruik ook een userform ('what's in a name ? ') voor de invoer door de gebruiker.
Daarmee kun je alle invoer van de gebruiker afvangen (maar is dan vaak niet eens meer nodig).
Gebruik wat in een programma al ingebakken zit in plaats van het wiel opnieuw uit te vinden.
 
Beste,

In de periode dat de toepassing wist nog niet zoveel af van userforms. Dankzij dit forum heb ik veel bijgeleerd. Het dus wellicht beter mijn toepassing te herwerken ipv van op de oude structuur verder te werken. Mocht ik problemen ondervinden, mag ik jullie waarschijnlijk om raad vragen?
 
@Timshel : De OnKey-methode voor de cijfertoetsen functioneert niet.
Code:
Private Sub Workbook_Open()
    Application.OnKey "{101}", "" '5 op het numerieke toetsenbord
    Application.OnKey "5", ""
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "{101}"
    Application.OnKey "5"
End Sub

@Edmoor : Het uitschakelen van de numlock lukt. Maar schakel je het via VBA weer in?
Code:
Private Declare Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
    Private Const VK_NUMLOCK = &H90
    Private Const KEYEVENTF_KEYUP = &H2
    Declare Function GetKeyState Lib "user32.dll" ( _
    ByVal nVirtKey As Long) As Integer

Sub NUM_Off() 'Turn NUM-Lock off
    If (GetKeyState(vbKeyNumlock) = 1) Then
        keybd_event VK_NUMLOCK, 1, 0, 0
        keybd_event VK_NUMLOCK, 1, KEYEVENTF_KEYUP, 0
    End If
    MsgBox "NUMLOCK is uit"
End Sub
@Snb : de ombouw van de toepassing naar een userform is niet zo eenvoudig als eerst gedacht.
 
Aanzetje
 

Bijlagen

  • 0_deeltafels_toplink_v8.xlsb
    28,4 KB · Weergaven: 49
Beste,

Dit is geen aanzetje maar een aanzet. Dank je wel, ik kan weer verder.
 
Beste Snb,

Ik had de moed niet om mijn vba-code te herschrijven voor een userform want ik stootte op een paar problemen (vooral het genereren van de opgave). Ik heb jouw ontwerp bewaard.
Bedankt voor het meedenken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan