pouvons-nous exécuter une formule sans déplacer le curseur de la cellule? Après avoir donné des données dans la cellule d'entrée soit nous appuyons sur enter ou nous nous déplaçons de cette cellule et ensuite toute formule liée à cela est exécutée. Est-il possible que, tout en entrant l'entrée elle-même, nous pouvons voir le résultat en sortie dans Excel? S'il vous plaît aidez-moi à trouver cette option.exécution en direct de la formule
Répondre
Je ne crois pas que le code puisse s'exécuter alors que l '"éditeur" d'une cellule a le focus et le contrôle. Par exemple, essayez de faire quelque chose d'autre dans Excel pendant que vous modifiez une formule. Je crois que la cellule doit finir d'enregistrer sa valeur ou formule avant que le code puisse s'exécuter.
Vous pouvez avoir une formule "écouter" quand une cellule est mise à jour, mais c'est un peu compliqué. Il pourrait alors vous forcer dans la cellule d'origine une fois qu'il est mis à jour. Voici comment vous pouvez écrire du code pour "écouter" quand une valeur d'une cellule change. Dans l'exemple suivant:
- J'enregistre la valeur de Cell
I1
àstrValue
. - Ensuite, je lance une boucle qui reste en cours tant que la valeur de la cellule
I1
n'a pas changé. - La commande
DoEvents
relâche le contrôle au processeur, ce qui vous permet de travailler dans Excel pendant son exécution. - Une fois la valeur de la cellule
I1
modifiée, l'instructionWhile
sera fausse et la boucle se terminera. - Une fois la boucle terminée, une boîte de message apparaît indiquant que la valeur a changé et la cellule d'origine est de nouveau sélectionnée.
'
Sub testChange()
Dim strValue As String
strValue = Range("I1").Value
Do While strValue = Range("I1").Value
DoEvents
Loop
MsgBox "The value changed!"
Range("I1").Activate
End Sub
Peut-être que si vous vouliez simplement revenir le contrôle à la cellule d'origine chaque fois que la valeur a changé, vous pouvez utiliser la ligne ci-dessus sans la boîte de message et revenir à la boucle une fois que votre méthode s'exécute. Gardez à l'esprit que vous pourriez avoir à trouver une autre façon de quitter votre code si vous faites cela. Pourquoi voulez-vous que l'exécution s'exécute à l'intérieur de la cellule?
Quel est le but final de votre tâche?
Pour autant que je sache, le seul événement disponible est Worksheet_Change (ByVal Target As Range), qui est déclenché lorsque la modification est terminée, c'est-à-dire lorsque vous quittez la cible. Qu'écouteriez-vous dans le scénario que vous décrivez? Il me semble que vous auriez besoin d'un événement que je ne pense pas exister, comme changer. – Mathias
@Mathias - voir mon exemple ci-dessus. il utilise 'DoEvents' et une boucle pour" écouter "pour voir quand la valeur d'une cellule change. –
Test de votre macro dans Excel 2003, le MsgBox se déclenche uniquement après que vous appuyez sur Entrée pour terminer l'édition de la cellule. La propriété Value ne met pas à jour jusqu'à maintenant – barrowc
Appuyez sur F9 pour faire un nouveau calc sans bouger de la cellule d'entrée. Cela fonctionne dans Excel 2007. Je ne suis pas sûr des versions antérieures.
Pouvez-vous expliquer pourquoi vous voulez faire cela? Je peux voir la question mais aucun avantage à faire cela. Ne pas critiquer, juste curieux. – Mathias