Jörg: VBA, Excel, dynamisch Funktionen zuweisen

Beitrag lesen

Moin,

ByVal und ByRef hat nichts damit zu tun, dass ich mit Target.Value = "was neues" einen neuen Wert zB. zuordnen kann.

wenn ich jetzt nichts übersehen habe, brauchst Du weder ByVal noch ByRef. Nützlich wäre es zum Beispiel, wenn man ausgelagerte Subs oder Functions verwendet:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Verdopple(Target.Value)
End Sub

Function Verdopple(ByVal varWert)
Verdopple = 0
If IsNumeric(varWert) Then Verdopple = varWert * 2
End Function

Wieso heißt es zB. "BeforeDoubleClick"? Vermutlich, weil die Prozedur zwar nach dem Doppelklich aufgerufen wird, aber bevor die eigentlich Funktion des Doppelklicks (Zellinhalt ändern) angeboten wird.

Ja - meist wird man da keinen Unterschied feststellen. Sichtbar wird es zum Beispiel so:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Hallo"
End Sub

Wenn die MsgBox kommt, blinkt der Cursor noch nicht in der Zelle.

Das hieße, Blattname ist nicht in dem Zell-Range vorhanden. Ich würde umgekehrt prüfen wollen, ob Book1.xls:Blatt3 existiert als Arbeitsmappen-Tabellenblatt-Kombination. Sonst versuche ich ja was zu öffnen, was garnicht da wäre (was in dem Fall aber vermutlich garnicht vorkommen "kann", weil die Übersicht ja gerade per Auslesen erstellt wurde).

Du kannst auch verwenden:

if not objgefunden is nothing then … Blattname ist vorhanden

Dann wird reagiert, wenn der Name gefunden wurde.