Anzeige
Archiv - Navigation
1796to1800
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

VBA eigene Funktion im code verwenden

VBA eigene Funktion im code verwenden
30.11.2020 11:23:24
David
Hallo zusammen,
folgende Aufgabenstellung: ich soll in einer Matrix in der ersten Spalte Aktienkurse angeben, in der zweiten die Tagesrendite. Dies soll über eine Funktion geschehen die ich ausgelagert habe.
Mein Ansatz bisher (Funktion stimmt aufjedenfall)
Option Explicit
'Funktion erstellen
Function Tagesrendite(KursHeute As Integer, KursGestern As Integer)
Tagesrendite = (KursHeute - KursGestern) / KursGestern
End Function

Nun das erstellen der Matrix:
Sub Aufgabe2()
Dim Matrix(1 To 20, 1 To 4) As Integer
Matrix(1, 1) = 10
Matrix(2, 1) = 12
Matrix(20,1)=20
Dim index_i As Integer
Dim KursHeute As Integer
Dim KursGestern As Integer
Mein gedachter Ansatz wäre:
WorksheetFunction.Tagesrendite(Matrix(2,2);Matrix(1,2)) (bspw. dies dann in der Schleife  _
verbauen)
Jedoch kann ich mit dem Befehl WorksheetFunction.Tagesrendite die Funktion nicht so recht  _
benutzen,
ein Fehler im Listentrennzeichen wird mir aufgezeigt. Das Semikolon (;) wird makiert.
Wie kann ich die von mir vorgeschriebene Funktion nun in dem Fall beispielhaft verwenden (mit  _
Bezug auf die Matrix)?



		

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA eigene Funktion im code verwenden
30.11.2020 11:33:18
ChrisL
Hi
z.B.
Function Tagesrendite(KursHeute As Integer, KursGestern As Integer) As Variant
Tagesrendite = (KursHeute - KursGestern) / KursGestern
End Function

Sub t()
Dim Matrix(1 To 20, 1 To 4) As Integer
Matrix(2, 2) = 10
Matrix(1, 2) = 12
MsgBox Tagesrendite(Matrix(2, 2), Matrix(1, 2))
End Sub
cu
Chris
AW: VBA eigene Funktion im code verwenden
30.11.2020 11:49:13
David
Dankeschön klappt nun :)
AW: VBA eigene Funktion im code verwenden
30.11.2020 11:40:54
ralf_b
es ist ja auch keine Worksheetfunction.
es dürfte reichen wenn du nur Tagesrendite wert1, wert2 schreibst
aber es fehlt noch ein Rückgabewert
Function Tagesrendite(KursHeute As Integer, KursGestern As Integer) as Integer
Anzeige
Dein letzter Satz ist Quatsch, ...
30.11.2020 14:47:10
Luc:?
…Ralf;
als RückgabeWert wird der Wert bezeichnet, den die Fkt zurückgeben soll, idR ein Berechnungsergebnis. Was du meinst ist wohl der Datentyp des RückgabeWerts, aber der ist ohne spezifische Angabe Variant. Warum ein Kurswert deiner Meinung nach nun unbedingt Integer sein soll, musst du mal erklären! Ansonsten arbeiten Xl-Fktt idR ebenfalls mit untypisierten RückgabeWerten, sonst wären nämlich keine speziellen FehlerWerte möglich.
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Anzeige
AW:na dann...
30.11.2020 15:32:38
ralf_b
@luc Woher soll ich's denn wissen. Bin kein studierter Informatiker oder Mathe-Ass. Weshalb meine Wortwahl eben auch nicht 100% ig stimmt. Ich behaupte nur das was ich mir zusammenreime oder denke zu wissen. Manchmal geht's halt daneben. Aber dafür haben wir ja uns. Der Eine passt auf den Anderen auf. :)
Danke für die Erklärung. Das spart mir in Zukunft sicher ein paar "as Irgendwas".
Bitte sehr! ;-) owT
30.11.2020 17:54:27
Luc:?
:-?
AW: AW:na dann...
30.11.2020 18:19:39
ChrisL
Hi Ralf
Die "as Irgendwas" würde ich nicht weglassen. Mein "as Variant" kam aus dem Handgelenk, weil m.E. bereits die Deklaration der Eingabewerte unstimmig war (Aktienkurse haben Nachkommastellen).
Ich nehme zwar gerne mal eine Abkürzung, aber die Deklaration des Rückgabewertes von Funktionen lasse ich nicht weg. Sonst könnte ich auch gleich auf Option Explicit verzichten.
Vielleicht unglücklich formuliert, aber den Hinweis an David zum Rückgabewert fand ich OK. Aufgrund der unklaren Verwendung dachte ich auch, dass das Prinzip der Funktion noch nicht verstanden war.
cu
Chris
Anzeige
Hast du meinen Hinweis auf F-Werte nicht ...
01.12.2020 00:17:34
Luc:?
…gelesen bzw verstanden, Chris‽
TypDeklarierte Fktsrückgaben sind eine „Marotte“ von vbAccess- und allen Pgmmierern, die Fktt als reine PgmmierHilfen auffassen und dabei ggf auch berechtigt. Eine Fkt kann in Form einer UDF aber auch eine vollwertige Prozedur sein, die so auch in ZellFmln eingesetzt wdn kann. Und genau dann möchte sie doch im FehlerFall etwas mehr Service bieten als nur den, den der FmlText-Interpreter leistet (Standard #WERT! und #NV). Anderenfalls kann man sich sonst eine F-Behandlung mit F-Art-Unterscheidung sparen. Die würde dann nämlich nicht wirksam. Es sei denn, die Rückgabe soll auf jeden Fall diesem Typ entsprechen (bspw bei Boolean uU nützlich). Dann muss aber im F-Fall auch ein entsprd ErsatzWert bereitgestellt wdn. Anderenfalls erscheint in der Zelle nur #WERT!.
Morhn, Luc :-?
Anzeige
AW: Hast du meinen Hinweis auf F-Werte nicht ...
01.12.2020 07:48:10
ChrisL
Hi Luc
OK, der Hinweis zu allfälligen Fehlerwerten, die bei UDF's hilfreich sein können, ist berechtigt :)
Nur wird im vorliegenden Fall die Funktion offensichtlich nicht als UDF verwendet, sondern als "reine PgmmierHilfe". Davon kann man jedenfalls ausgehen, wenn David von der Verwendung innerhalb von Schleifen spricht.
cu
Chris
Richtig, aber trotzdem besser so etwas nicht ...
02.12.2020 01:28:04
Luc:?
…verabsolutieren, Chris;
so mancher dürfte dann denken, dass das immer so sein muss. Allerdings wird auch eine Hilfsfkt im Fktsassi angezeigt, wenn man nicht entsprd Maßnahmen ergreift. Und leider sieht man auch immer wieder einschränkende Argument-TypDeklarationen in Fällen, in denen das besser unterblieben und dafür etwas mehr Aufwand bei der Pgmmierung getrieben worden wäre…
Morhn, Luc :-?
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige