jetzt wird es wieder einmal spät und ich kämpfe mit einem problem:
da ich einige berechnungsformeln verwende die sehr lange sind, versuche ich dafür eigene funktionen zu programmieren, diese dann einer zelle zuzuweisen. ich muss also lange ketten von excel-standardfunktionen für vba ausführbar machen.
um dahinterzukommen wie das im detail aussieht, versuchte ich über makro aufzeichnen schlau zu werden (man muss ja nicht immer gleich eine/n Expert/in/en belästigen) jedoch erfolglos
kann mir da jemand helfen:
Die eingegebene Formel lautet:
=WENN(INDIREKT(ADRESSE(5;(T72)-1))="A";$x$50;AF73)
Vba interpretiert dies als:
ActiveCell.FormulaR1C1 =
"=IF(INDIRECT(ADDRESS(5,(RC[-12])-1))=""A"",R50C24,R[1]C)"
Wenn ich nun aber meine eigene funktion erstelle:
Public Function IINT()
IINT = "=IF(INDIRECT(ADDRESS(5,(RC[-12])-1 =""A"",R50C24,R[1]C)"
End Function
und diese einer zelle zuweise (mit =IINT())
so ist das ergebnis nicht eine zahl (z.B. inhalt von X50) sondern der textstring der funktion.
meine verzweifelten Fragen daher
1. wo liegt mein denkfehler, wie bekomme ich ein ergebnis zurück
2. was bedeutet die konvertierung von
ADRESSE(5;(T72)-1) nach ADDRESS(5,(RC[-12])-1)
bzw $X$50 nach R50C24
bzw AF73 nach R[1]C
3. (um mir unzählige fehlversuche zu sparen) wie funktionieren denn die verschiedenen bezugsarten in vba? gibt es so etwas wie relative bezüge die sich entsprechend anpassen, wenn ich die die funktion enthaltende zelle verschiebe oder kopiere?
mit bestem dank ür die mühe