Deze website maakt gebruik van cookies. Waarom? Klik hier voor ons privacy- en cookiebeleid. Door op akkoord te klikken of door gebruik te blijven maken van deze website geeft u aan akkoord te zijn met het gebruik van cookies.

Akkoord

Vraag & Antwoord

Programmeren

VBA (excel 97) Shift wel of niet ingedrukt

None
3 antwoorden
  • Hoe kan ik in Visual Basic for Applications (Excel 97) uitlezen of de Shift-toets wel of niet is ingedrukt, tijdens het klikken met de muis op de "control".
    Concreter, ik heb 4 image control's geplaatst in een userform, hieraan zijn procedures gekoppeld om de cursor in het actieve werkblad 1 plek te verplaatsen (omhoog, omlaag, links en rechts).
    Ik wil echter dat wanneer een gebruiker de SHIFT-toets ingedrukt houdt tijdens het aanklikken van een image-control dat de cursor meerdere plaatsen wordt verplaatst.
    Ik kan hiervoor aparte knoppen aanmaken, maar vind het elegantier op de SHIFT-knop manier.

    Wie helpt.

    [ Dit bericht is bewerkt door: jan horstman op 2002-05-14 00:34 ]
  • Binary Value Decimal Value Constant Meaning
    001 1 vbShiftMask The SHIFT key is pressed.
    010 2 vbCtrlMask The CTRL key is pressed.
    100 4 vbAltMask The ALT key is pressed.
    011 3 vbShiftMask + vbCtrlMask The SHIFT and CTRL keys are pressed.
    101 5 vbShiftMask + vbAltMask The SHIFT and ALT keys are pressed.
    110 6 vbCtrlMask + vbAltMask The CTRL and ALT keys are pressed.
    111 7 vbCtrlMask + vbAltMask + vbShiftMask The SHIFT, CTRL, and ALT keys are pressed.


    As with the mouse events' button argument, you can use the If…Then…Else statement or the And operator combined with the Select Case statement to determine whether the SHIFT, CTRL, or ALT keys are being pressed and in what, if any, combination.

    Open a new project and add the variable ShiftTest to the Declarations section of the form:

    Dim ShiftTest as Integer

    Add the following code to the form's MouseDown event:
    [code:1:188956d224]
    Private Sub Form_MouseDown(Button As Integer, _
    Shift As Integer, X As Single, Y As Single)
    ShiftTest = Shift And 7
    Select Case ShiftTest
    Case 1 ' or vbShiftMask
    Print "You pressed the SHIFT key."
    Case 2 ' or vbCtrlMask
    Print "You pressed the CTRL key."
    Case 4 ' or vbAltMask
    Print "You pressed the ALT key."
    Case 3
    Print "You pressed both SHIFT and CTRL."
    Case 5
    Print "You pressed both SHIFT and ALT."
    Case 6
    Print "You pressed both CTRL and ALT."
    Case 7
    Print "You pressed SHIFT, CTRL, and ALT."
    End Select
    End Sub[/code:1:188956d224]

    [ Dit bericht is bewerkt door: bosjvd op 2002-05-14 07:51 ]
  • Bedankt, maar …

    Helaas, dit werkt niet. De listing werkt inderdaad in Visual Basic (VB). In Visual Basic for Applications (VBA) krijg ik de foutmelding "Een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd".

    Na aanpassen van de Sub m.b.v. de help van VBA naar "Private Sub Userform_MouseDown(ByVal Button As fmButton, _
    ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)" en "Print" vervangen door "Msgbox" werkt het nog steeds niet en krijg ik dezelfde foutmelding.

    Helaas.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.