Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1460to1464
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Function - Argumente einblenden

Function - Argumente einblenden
01.12.2015 19:51:55
Noureddine
Abend zusammen,
habe soeben meine erste eigene Funktion gebastelt.

Function PAX(OPSumme As Range, BisDreißigTage As Range, BisSechzigTage As Range, Ü _
berSechzigTage As Range, Referenz As Range) As Single
PAX = Round((OPSumme / Referenz * BisDreißigTage * 15 * 100) + (OPSumme / Referenz *  _
BisSechzigTage * 25 * 100) + (OPSumme / Referenz * ÜberSechzigTage * 50 * 100), 2)
End Function
Berechnen tut er wie er soll.
Ich hab aber zwei Punkte, wo ich nicht weiter komme:
A) Er rundet nicht automatisch auf zwei Nachkommastellen (wahrscheinlich wegen dem Single)
B) Sobald ich in einer Zelle "=PAX(" eingebe, sollten die Argumente erscheinen. Passiert leider bei mir nicht.
Ich danke vorab für eure Hilfe.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Function - Argumente einblenden
01.12.2015 20:11:46
Michael
Hi Noreddine,
auf den ersten Blick fällt das fehlende "Public" auf.
Damit das eine UDF wird, die im Tabellenblatt verwendbar ist, muß das vorne dran, also etwa:
Public Function PAX(...) As Single
Das Runden mag ich ohne Werte nicht nachvollziehen.
Schöne Grüße,
Michael

AW: Function - Argumente einblenden
01.12.2015 20:25:40
Noureddine
Hallo,
mit "Private" oder "Public" geht´s leider auch nicht.

Papperlapapp, ...
01.12.2015 20:27:41
Luc:-?
…das stimmt einfach nicht, Michael!
Vor meinen UDFs steht so gut wie niemals ein Public und sie lassen sich alle in ZellFmln verwenden (anderenfalls schreibe ich Private)!
Warum sollte deine UDF nicht runden, Noureddine,
du hast doch Round* drin! Single bedeutet nur eine geringere Genauigkeit ggüber Double. Außerdem will ich doch hoffen, dass du das Zellformat entsprd eingestellt hast…!
* Die vbFkt Round rundet allerdings symmetrisch, nicht asymmetrisch wie die Xl-Fkt RUNDEN!
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Function - Argumente einblenden
01.12.2015 20:40:41
Luschi
Hallo Michael,
die Lösung findest Du
h i e r

Kurzfassung:
- in die Zelle schreiben: =pax
- jetzt Tastenkombination Strg+A
- ein Funktionsargumente-Fenster erscheint wie bei den üblichen Excel-Funktionen
Gruß von Luschi
aus klein-Paris
PS: Da 'Sub' & 'Function' automatisch den Status 'Public' haben, ist
dieser Zusatz nicht erforderlich

Anzeige
mein Fehler owT
01.12.2015 21:15:05
Michael

AW: mein Fehler owT
01.12.2015 22:35:17
Noureddine
Danke für den hinweis. Leider möchte ich nicht immer das Argumentenfenster öffnen müssen um zu wissen was ich eingebe, gib es da keine andere Lösung?
Ich weiß nicht warum er nicht auf zwei Nachkommastellen rundet. Was ich weiß ist, das ich vier Nachkommastellen bekomme.

Das liegt tatsächlich an 'As Single', ...
01.12.2015 23:44:52
Luc:-?
…Noureddine;
es wird zwar auf 2 Stellen gerundet, aber Xl muss dann diese Zahl auch noch darstellen, und da sie nur einfach genau ist, wird sie auch nur mit einfacher Genauigkeit dargestellt. Dadurch schleichen sich wieder zusätzliche Dezimalen ein. Folglich ist Xl selbst der eigentliche Verursacher, nicht die Fkt. Das hat etwas mit GleitkommaZahlen-Darstellung zu tun. Das kannst du auch überprüfen, indem du mal das Runden weglässt - die Dezimalen dürften dann anders aussehen -, und dann das Ergebnis in der Fml rundest.
Du meinst den FmlAssi, während Luschi dich auf die uralte Methode der Argument-Titel-Angabe in der Zelle aufmerksam machen wollte → ^A (=[Strg][Umsch][A]) → =PAX(^A. Du meinst aber sicher das kleine PopUp unter der EingabeZelle oder der Edit-Zeile. Das gibt's wohl erst seit Xl10 oder 11 (in Xl9/2k definitiv nicht) und arbeitet nur mit Xl-StandardFktt zusammen. Du kannst dir ja etwas Ähnliches selbst pgmmieren. Für eine ZellEingabe (nicht EditierZeile!) hatte ich das schon mal gemacht. Allerdings muss dafür die FmlEingabe zwischendurch unterbrochen wdn…(!)
Luc :-?

Anzeige
Übrigens, ...
02.12.2015 00:39:10
Luc:-?
…ich würde das ggf eher so schreiben:
Function PAX(OPSumme, Referenz, ParamArray Bis30_60_mehrTage())
Dim xFaktor, xTage
On Error Resume Next
xFaktor = Array(15, 25, 50): xTage = Bis30_60_mehrTage
If UBound(Bis30_60_mehrTage)  UBound(xFaktor) Then _
ReDim Preserve xTage(UBound(xFaktor))
PAX = Round(OPSumme / Referenz * _
WorksheetFunction.SumProduct(xTage, xFaktor) * 100, 2)
xFaktor = Empty: xTage = Empty
End Function
Auf diese Weise kannst du auch Ausdrücke und Skalare als FktsArgument verwenden. Bei deiner Version müssen es immer Zellen sein. Deshalb kommst du ggf nicht ohne Hilfszellen aus.
Durch das ReDimmen der das ParamArray enthaltenden Variablen xTage (das direkte ReDimmen des ParamArrays ist nicht möglich!) wdn evtl fehlende Werte durch 0 ersetzt und überzählige gehen verloren.
Luc :-?

Anzeige
genau das!
02.12.2015 02:36:57
Michael
@ Luc, ich hätte *schwören* können, daß ich das beim Eingeben einer UDF *heute* gesehen hatte - nachdem ich mit dem Public auf den Pinsel gefallen war, hab ich's nochmal getestet, nur um sehen, daß es eben *nicht* erschien.
Manchmal isses wie verhext!
@Luschi, danke für die ausführliche Schilderung
und überhaupt an alle schöne Grüße,
Michael

AW: genau das!
02.12.2015 17:02:17
Noureddine
Hallo,
vielen Dank vorerst für eure Hilfe.
@Luc, ich habs auf Xl10 ausprobiert. Leider gib es da das Popup auch nicht, wahrscheinlich erst ab Xl11.
Ich lass voerst meine Funktion so wie sie jetzt ist, da ich ja so oder so nur mit Zellen arbeite.
Ich tipp ungern etwas ab, bevor ich es verstehe, trotzdem danke.
Die Problematik mit den Nachkommastellen habe ich gelöst, indem ich die Variable Referenz auf Variant gesetzt habe, somit hat ich aich als Argument eine Formel verwenden (z.B. SVERWEIS()).

Anzeige
Meine Variante deiner UDF ist insgesamt ...
02.12.2015 17:20:15
Luc:-?
…variabler und damit in ZellFmln nützlicher als deine, Noureddine;
und was man (noch) nicht versteht, muss man sich halt Schritt für Schritt erarbeiten. Dann lernt man am Meisten und Besten… ;-]
Das Extra-PopUp gibt's nur für Standard-Xl-Fktt ab ca Xl10/11(XP/2003), nicht für eigene UDFs, denn die müssten dazu in die entsprd Xl-Routine eingebunden sein, was offensichtlich (bisher) nicht möglich war/ist.
Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige