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
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.