Implementieren von nicht-arrayverändernden UDFs in Excel-Add-Ins
In Excel-Add-Ins sind UDFs, die Zellwerte ändern, generell verboten. Es ist jedoch möglich, diese Einschränkung mithilfe einer Kombination aus Windows-Timern und Application.OnTime-Timern zu umgehen.
Windows-Timer-Einschränkung
Windows-Timer können keinen VBA-Code ausführen, während Zellen sind gerade bearbeitet werden oder Dialoge geöffnet sind. Diese Einschränkung verhindert, dass sie Zelleneigenschaften innerhalb von UDFs direkt ändern.
Lösung: Application.OnTime Timer
Um diese Einschränkung zu umgehen, wird innerhalb des UDF ein Windows-Timer verwendet Planen Sie einen Application.OnTime-Timer. Application.OnTime-Timer sind sicher und werden nur ausgelöst, wenn eine Zelle nicht bearbeitet wird und keine Dialoge geöffnet sind.
UDF-Implementierung
UDF-Implementierung (AddTwoNumbers): Berechnen Sie innerhalb der AddTwoNumbers-UDF die Summe wie gewohnt. Nach der Berechnung:
Erste Timer-Routine (AfterUDFRoutine1):
Zweite Timer-Routine (AfterUDFRoutine2):
Beispielverwendung
Private Sub TestAddTwoNumbers() Dim Cell As Range Set Cell = Range("A1") ' Cache the reference in the UDF Cell.Formula = "=AddTwoNumbers(1, 2)" ' Trigger the timer routine Cell.Calculate End Sub
Bei der Berechnung werden die Zellformeln in geändert Geben Sie den neuen Wert wieder, indem Sie die Zelle neben dem Anrufer auf den aktuellen Wert setzen.
Das obige ist der detaillierte Inhalt vonWie können nicht-arrayverändernde UDFs in Excel-Add-Ins implementiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!