Abfrage über function bei vbs
Hallo zusammen,
habe ein vb Script, welches je nach Aufruf verschiedene Mails verschickt. Es funktioniert also schon. Und das einwandfrei. Der Nachteil dabei ist, dass unter der jeweiligen function eine Menge jeweils gleicher Code und Text etc drinsteht. Muss ich was im Mailtext oder so ändern, muss ich das 4mal machen. Im Grunde wird ja eigentlich nur immer eine andere Mailadresse verwendet.
Jetzt hab ich mir gedacht dies wie folgt zu vereinfachen und nach der function einfach einen Parameter aufzunehmen und dann drunter mit if und else etc. das ein einem zu verarbeiten. Aber bei der Ausgabe ist sParameter immer leer. Wahrscheinlich ist es auch ganz einfach, aber ich komm nicht dahinter. Kann mir jemand sagen warum?
Vielen Dank und viele Grüße
Robert
Dim sParameter
function MailanPrivat01
sParameter = "1"
end function
function MailanPrivat02
sParameter = "2"
end function
function MailanFirma01
sParameter = "3"
end function
function MailanFirma02
sParameter = "4"
end function
MsgBox "Mail an " & sParameter, 48, "Test"
Wscript.Quit
habe ein vb Script, welches je nach Aufruf verschiedene Mails verschickt. Es funktioniert also schon. Und das einwandfrei. Der Nachteil dabei ist, dass unter der jeweiligen function eine Menge jeweils gleicher Code und Text etc drinsteht. Muss ich was im Mailtext oder so ändern, muss ich das 4mal machen. Im Grunde wird ja eigentlich nur immer eine andere Mailadresse verwendet.
Jetzt hab ich mir gedacht dies wie folgt zu vereinfachen und nach der function einfach einen Parameter aufzunehmen und dann drunter mit if und else etc. das ein einem zu verarbeiten. Aber bei der Ausgabe ist sParameter immer leer. Wahrscheinlich ist es auch ganz einfach, aber ich komm nicht dahinter. Kann mir jemand sagen warum?
Vielen Dank und viele Grüße
Robert
Dim sParameter
function MailanPrivat01
sParameter = "1"
end function
function MailanPrivat02
sParameter = "2"
end function
function MailanFirma01
sParameter = "3"
end function
function MailanFirma02
sParameter = "4"
end function
MsgBox "Mail an " & sParameter, 48, "Test"
Wscript.Quit
Please also mark the comments that contributed to the solution of the article
Content-Key: 252755
Url: https://administrator.de/contentid/252755
Printed on: April 23, 2024 at 11:04 o'clock
4 Comments
Latest comment
Hallo Robert,
hier ein Beispiel wie man Funktionsparameter verwenden kann:
Du kannst der Funktion auch mehrere Parameter übergeben wenn du Bedarf hast, diese werden einfach mit Komma voneinander getrennt:
Innerhalb der Funktionen greifst du dann mit den definierten Parameternamen auf die übergebenen Werte zu.
Siehe zu Prozeduren und Funktionen auch:
http://www.html-world.de/488/prozeduren-und-funktionen/
Grüße Uwe
hier ein Beispiel wie man Funktionsparameter verwenden kann:
Function sendMail(intParameter)
Dim mailto
Select Case intParameter
Case 1
mailto = "mailPrivat01@domain.de"
Case 2
mailto = "mailPrivat02@domain.de"
Case 3
mailto = "mailFirma01@domain.de"
Case 4
mailto = "mailFirma02@domain.de"
End Select
'......
'------ Hier der Rest deiner Mail-Routine ------
MsgBox "Sende mail an: " & mailto
End Function
'Sende Mail an Privat 1
sendMail 1
'Sende Mail an Privat 2
sendMail 2
'etc ....
Function sendMail(intParameter,strSubject,strBody)
'....
End Function
'Aufruf der Funktion mit mehreren Parametern
sendMail 1,"Betreff","Das ist ein Body-Text"
Siehe zu Prozeduren und Funktionen auch:
http://www.html-world.de/488/prozeduren-und-funktionen/
Grüße Uwe
Zitat von @RobertKa:
Wenngleich ich immer noch rätsele, warum in meiner Version sParameter immer leer war.
Weil die Variable innerhalb der Funktion geschützt ist. D.h innerhalb des Funktionskörpers ist dies Quasi eine neue Variable die nur in der Funktion verfügbar ist, die Ursprüngliche Variable außerhalb der Funktion änderst du damit nicht.Wenngleich ich immer noch rätsele, warum in meiner Version sParameter immer leer war.
Das kannst du aber z.B. mit einer Rückgabe des Wertes aus der Funktion ändern. Um etwas aus einer Funktion zurückzugeben weist du dem Namen der Funktionen den Wert zu,
Function sendMail()
'Wert aus der Funktion zurückgeben
sendMail = 2
End Function
'Funktion aufrufen und zurückgegebenen Wert der Variablen zuweisen
sParameter = sendMail
MsgBox sParameter
Etwas ähnliches kannst du mit ByRef ("Referenzparameter") vor dem Parameternamen erreichen, dann wird die ursprüngliche Variable geändert.
Dim sParameter
Function sendMail(ByRef sPar)
sPar = 20
End Function
msgbox "Parameter hat noch keinen Wert : " & sParameter
'Funktion mit ByRef Parameter aufrufen
sendMail sParameter
' sParameter wurde durch die Funktion geändert und hat jetzt den Wert 20
msgbox "Parameter hat nun den Wert : " & sParameter
Hoffe das hat zu deinem Verständnis beigetragen
Schönen Abend
Grüße Uwe