2013-01-18 2 views
1

J'ai un tableur en mode manuel pour le gain de temps (le calcul est long).Détecter le type de calcul via vba

Je voudrais offrir un moyen de conseiller l'utilisateur si un calcul doit être effectué ou non pour mettre à jour l'ensemble du classeur. Je n'y ai pas encore réfléchi complètement, mais dans ma tête je dois être capable de distinguer les calculs effectués par un utilisateur.

I.e. J'ai besoin d'un événement worksheet_calculate pour pouvoir reconnaître si l'utilisateur a fait un shift-f9 ou un ctrl-shift-f9 et être capable de modifier son comportement en conséquence.

Toute aide serait grandement appréciée.

+0

si l'utilisateur chnages le calcul dans le menu? –

Répondre

4

Vous pouvez essayer d'utiliser onkey:

Sub TrackKeys() 
    Application.OnKey "+{F9}", "Recalculate" 
End Sub 

'in your sub you can call the calculations mode to be changed. 
Sub Recalculate() 
    Sheet1(1).Range("A2:E5").Calculate 
End Sub 

trouvé le lien: Essayez ceci pour une meilleure explication :)

http://support.microsoft.com/kb/919127

+0

Merci - n'avait pas pensé à essayer de cette façon. Cela pourrait donner quelque chose ... – chrisSpaceman

+0

Oui - cela fonctionnera bien. J'ai également remarqué qu'un shift-f9 frappe d'abord l'événement Worksheet_Calculate puis l'événement Workbook_SheetCalculate alors qu'un ctrl-xhift-alt-f9 le fait de l'autre côté. J'imagine que tu pourrais faire quelque chose avec ça mais ta méthode si c'est plus propre. – chrisSpaceman

+0

+ 1 pour avoir la bonne question;) –