Excel VBA Funktion soll Wert zurückgeben

yxy

Lieutenant
Registriert
Juli 2014
Beiträge
552
Hallo,

ich habe zwei Funktionen gegeben.

Funktion A ruft mit "Call" die Funktion B auf.
Nun soll folgendes passieren:
Die Funktion B läuft durch und gibt am Ende einen Wert z.B. eine Null zurück an die Funktion A.
Dieser zurückgegebenen Wert soll die Funktion A in einer Variable speichern.

Gibt es dazu euen Befehl?
Aus C kenne ich das z.B. so,dass ich einfach in Funktion A schreiben könnte:

Code:
int Rückgabewert=Funktion B

Dann ist in der Variable "Rückgabewert" der Funktion A die Zahl gespeichert, die die Funktion B zurückgegeben hat.
 
In deiner Funktion A kannst du Funktion B aufrufen und eine beliebige Variable damit belegen. Das funktioniert, wie bei C.
 
Zuletzt bearbeitet von einem Moderator:
Zuletzt bearbeitet:
Danke für Eure Antworten.
Ich verstehe es aber noch nicht ganz.
Klar, ich könnte in Funktion B einfach eine globale Variable definieren und dann darauf von Funktion A aus zugreifen.
Ich würde das aber eher ungern machen. Viel lieber möchte ich, dass Funktion B den Wert der Funktion A übergibt.

Woran es momentan noch hapert:
1. Wie sage ich der Funktion B welchen Wert sie zurückgeben soll? (In C sage ich da z.B. "return 1").
2. Wie sage ich der Funktion A sie soll von Funktion B einen Rückgabewert erwarten und diesen dann in einer Variable speichern?
 
Ich vermutte du willst sowas.

Code:
Function A()
Dim int_WertVonB As Integer
    
    int_WertVonB = B
    MsgBox int_WertVonB
End Function

Function B() As Integer
    'Irgendwo hier passiert die Magie'
    
    B = 0
End Function
 
Danke.
Woher weiß aber die Funktion B welchen Wert sie zurückgeben soll?
Gibt die nur die Variable zurück, die gleich heißt wie die Funktion selbst?
 
Ich verstehe, dass das Konzept der Wertrückgabe so einfach ist, dass man den Wald vor lauter Bäumen übersieht.
Aber ich fand nach zwei Klicks in der Hilfe eine Beispielfunktion für so was ("Celsius")...
 
yxy, willst du nun Antworten von C angeleitet oder direkt für VBA?
Wenn du so gut C kannst, sollte VBA doch kein Problem sein.
DU verhaspelst dich in #4, die Antwort kam doch schon in #3 !
 
Habe nicht ganz die Frage verstanden, aber der Ausdruck in Zeile 11 meines Codes, ist mit dem return [Value] aus C zu vergleichen.
Nur ist die Konvention bei VBA [Funktionsname] = [name_Rückgabewert], wobei [name_Rückgabewert] eine Variable sein kann, oder aber auch der Rückgabewert aus einer weiteren Funktion C z.B.

Noch mal das selbe, nur mit Namen der Funktionen.
Code:
Function Funktion_A()
Dim int_WertVonB As Integer
    
    int_WertVonB = Funktion_B 'Hiermit wird die Funktion B aufgerufen und nach
                               Berechnung, wird der Wert in die Variable gespeichert'
    MsgBox int_WertVonB
End Function

Function Funktion_B() As Integer
    'Irgendwo hier passiert die Magie'
    
    Funktion_B = 0 'Hier wird die 0 als Rückgabewert von der
                    Funktion B zurückgeschickt, wer auch immer diese aufruft.
                    In unserem Fall wird das die Funktion A sein.'
End Function
 
Zuletzt bearbeitet:
Ach ok, ich habe es glaube ich jetzt verstanden. Danke an alle :)

Die Funktion gibt immer den Inhalt der Variable zurück, die so heißt wie die Funktion selbst.
Habe ich also eine Funktion "Test", so gibt die Funktion nur den Wert zurück, der in ihr unter der Variable "Test" gespeichert ist.

In C kann ich z.B. sagen: Die Funktion "Test" soll mir eine Variable zurückgeben mit dem Namen "Anders".

@engine: "Wenn du so gut C kannst, sollte VBA doch kein Problem sein." Wer hat denn behauptet, dass ich gut C kann. ;)
 
yxy schrieb:
Die Funktion gibt immer den Inhalt der Variable zurück, die so heißt wie die Funktion selbst.

Das hast du leider falsch verstanden. Es handelt sich NICHT um eine Variable die zufällig wie die Funktion heißt. Es ist der Funktionsaufruf, der exact dem Namen der Funktion selbst darstellt. Nichts anderes darf so heißen.

yxy schrieb:
@engine: "Wenn du so gut C kannst, sollte VBA doch kein Problem sein." Wer hat denn behauptet, dass ich gut C kann. ;)

Ich würde dir raten, dich mit den grundlegenden Konzepten der Programmierung zu befassen, egal welche Sprache. Wenns dir nur um VBA geht, gibt es sicherlich online Tutorien für Anfänger die dir weiterhelfen werden.
 
G-Red schrieb:
... Es ist der Funktionsaufruf, der exact dem Namen der Funktion selbst darstellt. Nichts anderes darf so heißen ...
Deshalb sollte jede gute Funktionsdeklaration auch mit einem ... As <Datentyp> enden.
 
@halve
Kann man so oder so sehen. Wenn die Funktion ehe nichts weitergibt, wozu sollte das dann da stehen.
 
Wenn die Funktion nichts zurückgibt, sollte die Sub heißen ...
 
Zurück
Oben