Position eine Function ermitteln

Hallo zusammen,

wollte gerade die Frage nach den abweichenden Farben (siehe etwas weiter unten) so lösen, dass ich aus einer Zelle per Function in die Nachbarzelle schaue. Da stellte sich eine Frage: Wie ermittelt man die Position einer Funtion?

Also: In welcher Zelle wohnt eine Funktion?

P.S.: Habs jetzt als Parameter übergeben …

mfg

Dirk.Pegasus

Also: In welcher Zelle wohnt eine Funktion?

Moin Dirk,

Option Explicit
Function Peilung()
MsgBox Application.Caller.Address
End Function

Gruß
Reinhard

Danke
Hallo Reinhard,

klasse.

Und wenn man dann noch die Adresse in ein Range steckt, kann man an die Spalte und die Zeile.

r = Application.Caller.Address.Row

Funktioniert nämlich nicht, obwohl da angeblich ein Range Objekt zurückgeliefert wird, oder hab ich da einen Denkfehler?

mfg

Dirk.Pagasus

Und wenn man dann noch die Adresse in ein Range steckt, kann
man an die Spalte und die Zeile.
r = Application.Caller.Address.Row
Funktioniert nämlich nicht, obwohl da angeblich ein Range
Objekt zurückgeliefert wird, oder hab ich da einen Denkfehler?

Hi Dirk,

Option Explicit
Function Peilung()
Dim r As Long
r = Range(Application.Caller.Address).Row
MsgBox r
End Function

Gruß
Reinhard

Hallo Reinhard,

Hatte ich schon so gemacht, aber warum kann ich nicht direkt auf Row zugreifen, wenn die Adress doch ein Range liefert?

mfg

Dirk.Pegasus

Hatte ich schon so gemacht, aber warum kann ich nicht direkt
auf Row zugreifen, wenn die Adress doch ein Range liefert?

Hallo Dirk,
wie kommst du auf Range?

Option Explicit
Function Peilung()
MsgBox TypeName(Application.Caller.Address)
End Function

Gruß
Reinhard

Hallo Reinhard,

wie kommst du auf Range?

Hab mal kurz in die Hilfe geschaut, je nach dem wer Caller ist, werden unterschiedlich Typen zurückgegen. Ggfs. gibts keine Adresse.

So steht es in der Hilfe:

Select Case TypeName(Application.Caller)
Case „Range“
v = Application.Caller.Address
Case „String“
v = Application.Caller
Case „Error“
v = „Error“
Case Else
v = „unknown“
End Select
MsgBox "caller = " & v

Und nun habe ich meinen Fehler entdeckt: Application.Caller ist schon ein Range Objekt, deswegen kennt es auch die Eigenschaft Adress. Ich hatte die …Adress per Row ansprechen wollen, blöd…

Also alles ok, und nochmals vielen Dank!

mfg

Dirk.Pegasus