Heim > Backend-Entwicklung > C++ > Können Excel-UDFs Zellen ändern, ohne Arrays zurückzugeben?

Können Excel-UDFs Zellen ändern, ohne Arrays zurückzugeben?

Susan Sarandon
Freigeben: 2024-11-24 21:48:47
Original
893 Leute haben es durchsucht

Can Excel UDFs Modify Cells Without Returning Arrays?

Excel-UDFs: Zellen ändern, ohne Arrays zurückzugeben

Eine der Einschränkungen benutzerdefinierter Funktionen (UDFs) in Excel ist ihre Unfähigkeit, dies zu tun Zellen oder Arbeitsmappeneigenschaften direkt ändern. Es gibt jedoch eine, wenn auch komplexe, Problemumgehung, die es UDFs ermöglicht, Zellmodifikationen durchzuführen.

Verwendung von Windows- und Anwendungstimern zur Umgehung von UDF-Einschränkungen

Zum Modifizieren von Zellen innerhalb von a Zum Einsatz kommt UDF, eine clevere Kombination aus Windows-Timern und Application.OnTime-Timern. Der Windows-Timer initiiert einen Application.OnTime-Timer, der Code sicher ausführt, wenn Excel Zelländerungen zulässt.

Implementierung

Die UDF ruft die Windows-Timerroutine auf, die eine plant Application.OnTime-Timer mit einem bestimmten Zeitparameter. Die Application.OnTime-Routine führt dann Code aus, der nicht innerhalb der UDF selbst ausgeführt werden kann.

Beispielcode

Der folgende Code zeigt, wie diese Problemumgehung implementiert wird:

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
Nach dem Login kopieren

Vorbehalte

Diese Problemumgehung ist nicht ohne Einschränkungen. UDFs, die es verwenden, sollten nicht flüchtig sein, keine flüchtigen Funktionen übergeben oder auf Zellen verweisen, die flüchtige Formeln/Funktionen enthalten. Darüber hinaus werden Zelländerungen nur dann vorgenommen, wenn der Timer in einer sicheren Umgebung ausgelöst wird (keine offenen Dialoge oder Zellbearbeitung).

Das obige ist der detaillierte Inhalt vonKönnen Excel-UDFs Zellen ändern, ohne Arrays zurückzugeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage