Hintergrund:
25.11.2018 01:09:09
Luc:-?
Eine UDF in einer ZellFml kann in Xl genau dann eine Fernwirkung entfalten, d.h. den Inhalt einer anderen als ihrer StandortZelle oder das Format der eigenen bzw einer anderen Zelle ändern, wenn dieser Wirkungsteil von der UDF physisch entkoppelt wird. D.h., diese Aktion muss separat und unabhängig von der UDF ausgeführt wdn, kann aber (und muss hierbei sogar) von ihr angestoßen wdn. Das kann man über durch die UDF ausgelöste EreignisProzeduren* oder eben über Evaluierung einer beliebigen Prozedur (als TextBefehl) auslösen. Auch in diesem Fall ist unter Xl eine Entkopplung beider Vorgänge gegeben.
* Damit hatte ich (bereits) vor ca 9-10 Jahren begonnen, bis ich aufs Evaluieren verfiel, was noch einen von manch Anderem ebenfalls beobachteten, aber wohl eher ungenutzten Effekt hat: bestimmte Werte können, zumindest kurz, im US-Original erscheinen, dauerhaft vor allem dann, wenn sonst nur eine lokale Variante (einer Fml) zV steht (BedingtFormat- & GültigkeitsRegeln).
Nebeneffekt: Der Inhalt einer derart überwachten Zelle lässt sich nicht entfernen, solange die Überwachungszelle vorhanden und aktiv ist, allerhöchstens - je nach übertragenem Inhalt - aktualisieren. Folgendes mal als zusätzliches Bsp:
Function RaiseAction(Ziel As Range, ByVal Inhalt)
Dim dezTrz$
dezTrz = Application.International(xlDecimalSeparator)
If IsNumeric(Inhalt) Then
Inhalt = Replace(CStr(Inhalt), dezTrz, ".")
Else: Inhalt = """" & Inhalt & """"
End If
RaiseAction = ActiveSheet.Evaluate("ExecAction(" & Ziel.Address & "," & Inhalt & ")")
End Function
Private Function ExecAction(Ziel As Range, ByVal Inhalt) As Boolean
Ziel = Inhalt: Let ExecAction = Ziel = Inhalt
End Function
Wenn jetzt irgendwo (versteckt, gern auch in einer VerbundZelle°) auf einem Blatt die folgd Fml oder gar nur =ihrName, falls sie benannt wird, steht, kann das Verhalten der Zielzelle einen Ahnungslosen sicher zur Verzweiflung treiben (allerdings muss man dann noch das Löschen der ganzen Zeile oder Spalte abfangen und die Fml in diesem Fall neu anlegen, man könnte dabei den Inhalt auch variieren!):
=Wache ← Wache: =RaiseAction($A$1;"Ha, ha, ha!")
So, jetzt bin ich mal gespannt, wann die erste, auf derartigen Schabernack bezogene Anfrage kommt… ;-]
° Weitere nützliche(re) Dinge (zu VerbundZellen) wdn hier (bzw dito im Archiv) gezeigt.
Luc :-?