Jörg: VBA, Excel, dynamisch Funktionen zuweisen

Beitrag lesen

Moin,

Fein, das ist also ein Eventhandler, der sich aufs aktuelle Worksheet bezieht und deshalb immer "Worksheet_SelectionChange" heißt (analog zu Javascripts "onclick", "onmouseout")

das kann man IMHO so vergleichen.

und als Paramter immer den selected Range enthält? Der Variablenname "Target" wäre also frei wählbar? Is ByVal Pflicht, oder wäre ByRef auch sinnvoll?

Nein. Der/das Target wird zurückgegeben und ist die angeklickte Zelle. Teste das mal mit der Routine, indem Du einfach einträgst:

msgbox target.address

Dann hast Du die Adresse der angeklickten Zelle. Mit

msgbox target.address(false, false)

kriegst Du auch die $ weg. ;-)

Gibt es ein Fachwort in VBA für dieses Eventhandling

Ja, Eventhandler. ;-)

(da gibts ja sicher noch mehr als "SelectionChange", oder?

Die siehst Du, wenn der Cursor in der Routine steht, oben rechts im Dropdown.

Fein. Weiter oben "addete" (;-) ich noch eine Frage, wie ich zB. rausbekomme, ob die Tabelle mit dem Namen im aktuellen Sheet schon existiert. https://forum.selfhtml.org/?t=188131&m=1251822.

Das würde ich mit Find machen:

dim objGefunden as object

set objgefunden = workbooks(sowieso).sheets(sowieso).columns(sowieso).find(Blattname, lookat:=xlwhole)
if objgefunden is nothing then … Blattname ist nicht vorhanden
set objgefunden = nothing

Bisher habe ich die Prozeduren immer der Tabelle zugeordnet (Doppelklich wie oben beschrieben). "Normal" ist wohl, Makros erstmal dem ganzen Workbook zur Verfügung zu stellen? (Doppelklick auf "diese Arbeitsmappe")?

Das kann man so nicht sagen, weil es davon abhängig ist, was man vorhat.

Oft ist es aber nützlich, Routinen in allgemeinen Modulen zu erstellen und diese dann per Eventhandler (ggf. mit Übergabeparametern) aufzurufen. Genauso kann es nützlich sein, eigene Klassen, eigene Funktionen (UDF), Klassenmodule der Anwendung, … zu erstellen - je nach Bedarf. Natürlich kann man den Code auch gleich in das Event schreiben.