Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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

Rueckgabewerte aus Function

Rueckgabewerte aus Function
11.01.2023 09:55:54
AL
Hallo zusammen,
ich habe folgende Problemstellung:
Ich habe eine Function namens test im Modul1 (siehe Beispielmappe). In diese Function lese ich die Variablen A, B, C, D aus der Tabelle1 ein. Aus dieser Function test möchte ich mehrere Teilergebnisse (hier ErgAB, ErgAC, ErgAD) ausgegeben haben. Hierzu bediene ich mich der Function testausgabe, wo durch Eingabe des entsprechenden Rückgabewertes das Ergebnis ausgegeben wird (siehe Tabelle1 Zellen D9 bis D11). Wenn allerdings in der Function test komplexe Berechnung durchgeführt werden mit vielen Teilergebnissen (> 50), die man ausgeben möchte, dann ist das recht mühselig alle Ergebnisse erst in test = ErgAB & ";" & ErgAC & ";" & ErgAD und dann in Rueckgabewert_arr = Array("ErgAB", "ErgAC", "ErgAD") zu definieren.
Meine Frage:
Gibt es eine Möglichkeit die Function test und/oder testausgabe so zu gestalten, dass man nur über die Zelleingabe den Rückgabewert und die Variablen einliest und das Teilergebnis bekommt? Beispielsweise gebe ich in Zelle D9 =testausgabe("ErgAB";$D$4;$D$5;$D$6;$D$7) und die beiden Functions sind so automatisiert, dass das Teilergebnis selbstständig gefunden werden kann?
Danke für die Hilfe.
AL
https://www.herber.de/bbs/user/157201.xlsm

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rueckgabewerte aus Function
11.01.2023 10:19:14
Yal
Hallo AL,
ich gehe davon aus, dass es sich um ein vereinfachte Beispiel handelt, und dass der tatsätzliche Fall viel komplexer ist.
Möglichkeit 1: man verwendet einen Index anstatt "ErgAB" & co. Dieser ist optional: wenn nicht gegeben, dann 1

Public Function test(A, B, C, D)
ErgAB = A + B
ErgAC = (A + C) ^ 2
ErgAD = Sqr(A ^ 2 + D ^ 2)
test = Array(ErgAB, ErgAC, ErgAD)
End Function
Public Function testausgabe(A, B, C, D, Optional RückgabeElt = 1)
On Error GoTo Catch
Try:
testausgabe = test(A, B, C, D)(RückgabeElt - 1)
GoTo Finally
Catch:
testausgabe = "Fehler"
Finally:
'hier kommen Aktionen, die auf alle Fälle durchlaufen sollten. Wenn keine, kann man eine "Exit Function" anstatt "Goto Finally" verwenden
End Function
Möglichkeit 2: mit Select Case vereinfacht: es ist unnötig, alle 3 Werte zu berechnen, wenn immer nur eine abgefragt wird. Je nach Komplexität würde ich je eine
Function ErgAB (A, B)
Function ErgAC (A, C)
usw. herstellen und im select case aufrufen.

Public Function testausgabe(A, B, C, D, Optional Rückgabe As String = "ErgAB")
Select Case LCase(Rückgabe)
Case "ergab" 'default
testausgabe = A + B
Case "ergac"
testausgabe = (A + C) ^ 2
Case "ergad"
testausgabe = Sqr(A ^ 2 + D ^ 2)
Case Else
testausgabe = "Rückgabeschlüssel unbekannt"
End Select
End Function
VG
Yal
Anzeige
AW: Rueckgabewerte aus Function
11.01.2023 11:18:19
Rudi
Hallo,
evtl so?

Public Function testausgabe(Rueckgabewert, A, B, C, D) As Double
Dim i As Integer
Dim arrERG(1 To 3), arrRUECK
arrRUECK = Split("ErgAB ErgAC ErgAD")
i = Application.Match(Rueckgabewert, arrRUECK, 0)
'**** Variante 1 ****
arrERG(1) = A + B
arrERG(2) = (A + C) ^ 2
arrERG(3) = Sqr(A ^ 2 + D ^ 2)
testausgabe = arrERG(i)
'**** Variante 2 ****
'      Select Case 1
'        Case 1: testausgabe = A + B
'        Case 2: testausgabe = (A + C) ^ 2
'        Case 3: testausgabe = Sqr(A ^ 2 + B ^ 2)
'      End Select
End Function
Gruß
Rudi
Anzeige
AW: Rueckgabewerte aus Function
13.01.2023 16:18:27
AL
Danke euch. Beide Beiträge waren hilfreich.
Schönes We allen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige