PDA

Vollständige Version anzeigen : Benutzerdefinierte Funktion ohne Übergabewert


Irie
29.06.2015, 23:33
Hallo zusammen,
ich möchte gern eine Funktion im Excel Worksheet verwenden, die keinen Übergabewert braucht. Wobei es mir auch egal wäre, ob ich noch eine Zelle mitübergebe.

Sie soll also beispielsweise in Zelle B5 wie folgt aufgerufen werden "=Churn()". Nun soll die Funktion erkennen, in welcher Zelle sie sich befindet und zwar ohne dass sich das ändert, wenn ich eine andere Zelle aktiviere. Damit fällt ActiveCell als Methode leider raus, da sich diese später ändern kann.

Churn = ActiveCell.Row würde zwar vorübergehend 5 und
Churn = ActiveCell.Column würde 2 zurückgeben, aber wenn ich in anderen Zellen arbeite, würde sich das über die Zeit ändern. Wie verhindere ich das, sprich welche Methode nutze ich in meinem Fall?

Gruß
Irie

EarlFred
30.06.2015, 04:38
Hallo Irie,

nutze Application.Caller

Grüße
EarlFred

Irie
05.07.2015, 12:59
Habs leider nicht geschafft mit Hilfe der Funktion... werde wohl lieber auf die mir geläufige sub umsteigen anstatt mit function zu arbeiten.

Nepumuk
05.07.2015, 15:11
Hallo,

Application.Caller ist im Fall einer Tabellenfunktion die Zelle in der sich die Formel befindet. Beispiel:

Public Function Churn() As Variant
Churn = Application.Caller.Row & " \ " & Application.Caller.Column
End Function
<table border='1' cellspacing='0' cellpadding='2' valign='middle' colspan='3' style='font-family:Verdana; color:#000000; background-color:#FFFFFF; font-size:10px; font-weight:normal; font-style:normal; '><colgroup><col width='28pt'><col width='66pt'><col width='66pt'></colgroup><tr style='background-color:#cacaca'><td>*</td><td align='middle'>A</td><td align='middle'>B</td></tr><tr><td style='background-color:#cacaca' align='middle'>1</td><td align='left' >1 \ 1</td><td align='left' >1 \ 2</td></tr><tr><td style='background-color:#cacaca' align='middle'>2</td><td align='left' >2 \ 1</td><td align='left' >2 \ 2</td></tr></table><br><table border='3' cellspacing='0' cellpadding='2' valign='middle' colspan='2' style='table-layout:auto; color:#000000; background-color:#FFFFFF; font-family:Verdana; font-size:10px;'><colgroup><col width='40pt'><col></colgroup><tr style='background-color:#eeaaaa'><td>Zelle</td><td>Formel</td></tr><tr><td>A1</td><td><Span style='color:#222222'>=Churn</Span><Span style='color:#0000DD'>()</Span><Span style='color:#222222'></Span></td></tr><tr><td>B1</td><td><Span style='color:#222222'>=Churn</Span><Span style='color:#0000DD'>()</Span><Span style='color:#222222'></Span></td></tr><tr><td>A2</td><td><Span style='color:#222222'>=Churn</Span><Span style='color:#0000DD'>()</Span><Span style='color:#222222'></Span></td></tr><tr><td>B2</td><td><Span style='color:#222222'>=Churn</Span><Span style='color:#0000DD'>()</Span><Span style='color:#222222'></Span></td></tr></table>

Irie
06.07.2015, 15:18
Ah, super! Vielen Dank... ich wusste nicht, dass ich noch die "extension" row und column brauche. Daher hats imemr nicht funktioniert. Jetzt weiß ichs fürs nächste mal.

Erneut mein Kompliment an das tolle Forum!

Gruß
Irie