cancel = true

cancel = true - VB/VBA/VBS - Programmation

Marsh Posté le 06-01-2011 à 11:33:13    

Bonjour tout le monde,
 
J'ai juste une petite question concernant l'utilisation de cancel=true.
 
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  MsgBox "Vous avez double cliqué sur la cellule " & Target.Address
  Cancel = True
End Sub
 
Dans ce code, l'utilisation de cancel n'est-elle pas censée empêcher l'ouverture de la MsgBox lors d'un clique droit?
Il n'est pas supposé rien se passer finalement?
 
Chez moi la MsgBox s'affiche bien.
 
Je n'ai probablement pas bien compris l'utilisation de cancel.
 
Merci d'avance de votre aide

Reply

Marsh Posté le 06-01-2011 à 11:33:13   

Reply

Marsh Posté le 06-01-2011 à 14:28:22    

Cancel est un paramètre qui est passé en lecture et en écriture, car il n'est pas défini "ByVal", et donc il est défini "ByRef" par défaut.
 
Donc, à l'intérieur de la procédure, changer ce paramètre aura une influence après que la procédure sera exécutée si le programme, qui suit, teste cette variable.
Et c'est le cas, après la procédure, Excel va tester Cancel.
 
Si Cancel est à True, alors Excel ne va pas faire son traitement habituel, parce qu'Excel considère que l'événement du clic droit a été entièrement pris en charge par la procédure.
 
Si vous laissez Cancel tel quel, ou si vous mettez Cancel à False, alors, après la procédure, Excel, va continuer en traitant le clic droit comme il le fait par défaut.
 
Par exemple, si, par défaut, le clic droit affiche un menu contextuel, alors mettre Cancel à True va empêcher l'affichage de ce menu.
 
Pour plus d'infos, voir la doc officielle http://msdn.microsoft.com/en-us/li [...] S.80).aspx
 
Edit : Donc, on voit que Cancel n'empêche rien de ce qui se trouve dans la procédure (l'affichage du message), mais à une action pour ce qui vient après par défaut.


Message édité par olivthill le 06-01-2011 à 14:31:18
Reply

Marsh Posté le 06-01-2011 à 14:56:49    

Merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed