Maison > développement back-end > C++ > le corps du texte

Les UDF Excel peuvent-elles modifier des cellules sans renvoyer de tableaux ?

Susan Sarandon
Libérer: 2024-11-24 21:48:47
original
874 Les gens l'ont consulté

Can Excel UDFs Modify Cells Without Returning Arrays?

FDU Excel : modifier des cellules sans renvoyer de tableaux

L'une des limites des fonctions définies par l'utilisateur (FDU) dans Excel est leur incapacité à modifier directement les cellules ou les propriétés du classeur. Cependant, il existe une solution de contournement, bien que complexe, qui permet aux UDF de modifier les cellules.

Utiliser les minuteurs de Windows et d'application pour contourner les restrictions UDF

Pour modifier les cellules à partir d'un UDF, une combinaison intelligente de minuteries Windows et de minuteries Application.OnTime est utilisée. Le minuteur Windows lance un minuteur Application.OnTime, qui exécute le code en toute sécurité lorsqu'Excel autorise les modifications de cellule.

Implémentation

L'UDF appelle la routine du minuteur Windows, qui planifie une Minuterie Application.OnTime avec un paramètre de temps spécifique. La routine Application.OnTime exécute ensuite le code qui ne peut pas être exécuté dans l'UDF elle-même.

Exemple de code

Le code suivant montre comment cette solution de contournement est implémentée :

Public Function AddTwoNumbers(ByVal Value1 As Double, ByVal Value2 As Double) As Double
  AddTwoNumbers = Value1 + Value2
  ' Schedule the Windows timer
  mWindowsTimerID = SetTimer(0&, 0&, 1, AddressOf AfterUDFRoutine1)
End Function

Public Sub AfterUDFRoutine1()
  ' Schedule the Application.OnTime timer
  mApplicationTimerTime = Now
  Application.OnTime mApplicationTimerTime, "AfterUDFRoutine2"
End Sub

Public Sub AfterUDFRoutine2()
  ' Perform modifications outside the UDF
  '...
End Sub
Copier après la connexion

Mises en garde

Cette solution de contournement n'est pas sans limites. Les UDF qui l'utilisent ne doivent pas être volatiles, transmettre des fonctions volatiles ou référencer des cellules contenant des formules/fonctions volatiles. De plus, les modifications de cellule ne se produiront que lorsque la minuterie se déclenchera dans un environnement sûr (pas de boîte de dialogue ouverte ni d'édition de cellule).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal