Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Rückgabewert einer Funktion
#1
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
Antworten Top
#2
Hallo,
[ungeprüft] füge als letzte Zeile vor end sub ein:
F = vorname

Mfg
Antworten Top
#3
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
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.
Antworten Top
#5
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
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.
Antworten Top
#7
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.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: