anoniem Geplaatst: 13 mei 2002 Delen Geplaatst: 13 mei 2002 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 ] Quote Link naar reactie
anoniem Geplaatst: 14 mei 2002 Auteur Delen Geplaatst: 14 mei 2002 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 ] Quote Link naar reactie
anoniem Geplaatst: 14 mei 2002 Auteur Delen Geplaatst: 14 mei 2002 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. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen