Clever-Excel-Forum

Normale Version: Rückgabewert einer Funktion
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,

beschäftige mich gerade mit VBA und komme hier nicht weiter. Wie muß ich meinen Code verändern bzw. ergänzen damit mir die Funktion F als Rückgabewert den Gesamtnamen liefert und bei Debug.print im Hauptprogramm Main als Name  "Sabine Maier" herauskommt? Bitte helft einem Ahnungslosen.



Code:
Function F(ByVal Nachname As String) As String
Dim Vorname As String
Vorname = "Sabine"
End Function

Sub Main()
Dim Nachname As String
Dim Name As String
Nachname = "Maier"

'Funktionsaufruf
Name = F(Nachname)

'Ergebnisüberprüfung
Debug.Print Name

End Sub
Hallo,
[ungeprüft] füge als letzte Zeile vor end sub ein:
F = vorname

Mfg
Hallo!
z.B. so:

Sub Aufruf()
Debug.Print F("Maier", "Sabine")
End Sub

Function F(Nachname As String, Vorname As String) As String
F = Vorname & " " & Nachname
End Function

Gruß Ralf
Hallo Ralf,

danke für die schnelle Antwort. Mit Hilfe deines Codes habe ich das Ganze jetzt so gemach und es funktioniert:


Code:
Function F(ByVal Nachname As String) As String
Dim Vorname As String, Gesamt As String
Vorname = "Sabine"
Gesamt = Vorname & " " & Nachname
F = Gesamt
End Function

Sub Main()
Dim Nachname As String
Dim Name As String
Nachname = "Maier"

Name = F(Nachname)
Debug.Print Name

End Sub


Ich habe aber hier etwas Literatur vor mir liegen und möchte dich mal fragen, ob man hier "irgendwie" mal das Schlüsselwort Return einbauen kann, damit die Sache funktioniert. Als Anschauungsmaterial noch etwas alternativer Code.
Hallo!
Zunächst solltest Du nicht so verschwenderisch mit Variablen umgehen.
Wenn Du mal längere Codes schreibst, wird das Ganze schnell unübersichtlich.
(ist aber meine ureigene Meinung)

Zitat:möchte dich mal fragen, ob man hier "irgendwie" mal das Schlüsselwort Return einbauen kann, damit die Sache funktioniert.
Wie meinst Du das?
Makroaufruf geht per Alt+F8, Schaltfläche oder Shortcut.
(und bei Ereignismakros durch Eintreten des Ereignisses).

Gruß Ralf
Hallo Ralf,

ich muss jetzt leider aus dem Haus. Werde das aber noch mal raussuchen aus meinen Unterlagen.

Vielen Dank schon mal für deine schnelle Hilfe.
Ein "Return" in diesem Sinne gibt es so nicht. Die Zeile im obigen Code

Code:
F = Gesamt

ist dein "Return". Oder mit anderen Worten: In VBA wird der Rückgabewert einer Funktion immer durch Zuweisung an den Funktionsnamen erzeugt (hier fer Funktionsname Rechnen):

Code:
Function Rechnen(Zahl1, Zahl2, WasTun)
  Dim Rc As Single  'ReturnCode
 
  Select Case WasTun
  Case "Addition"
     Rc = Zahl + Zahl2
  Case "Subtraktion"
     Rc = Zahl1 - Zahl2
  Case "Multiplikation"
     Rc = Zahl1 * Zahl2
  Case "Division"
     Rc = Zahl1 / Zahl2
  Case Else
     MsgBox "Das Argument " & WasTun & " ist fehlerhaft!"
  End Select
  Rechnen = Rc   'Hier ist "Dein" Return
End Function
Hier ist die Variable Rc einfach einmal eingesetzt, weil sie in meinen Augen aussagekräftiger ist als der Name der Function.