Ga naar inhoud

VBA (excel 97) Shift wel of niet ingedrukt


Aanbevolen berichten

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 ]
Link naar reactie
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 ]
Link naar reactie
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.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...