tommygun
Goto Top

Funktion mit mehreren ByRefs aufrufen

Hallo, ich habe eine Funktion in meinem Excel-Macro und möchte diese aufrufen um mir mehrere Werte zurückzugeben.
Das genau das nicht so geht, hab ich schon gelesen und darum mit ByRef hantiert.

hier mal, wie das eingebunden wurde von mir, nur beispielhaft, da wird in Wirklichkeit richtig viel gerechnet:

Function GetProvision( _
ByVal intA_n As Integer, ByVal intB_n As Integer, ByVal strC_n As String, _
ByVal strD_n As String, ByVal boolE_n As Boolean, ByVal boolF_n As Boolean, _
ByRef dblG_n As Double, ByRef dblH_n As Double, ByRef strJ_n As String)
dblG_n = 0.01
dblH_n = 0.02
strJ_n = "3"  
End Function

Private Sub bttnMe_Click()
Dim intA As Integer
Dim intB As Integer
Dim strC As String
Dim strD As String
Dim boolE As Boolean
Dim boolF As Boolean
Dim dblG As Double
Dim dblH As Double
Dim strJ As String

GetProvision(intA, intB, strC, strD, boolE, boolF, dblG, dblH, strJ)
' genau das geht nicht, aber warum?  
' da wird ein = verlangt, ich will doch aber durch die Funktion  
' die Werte ändern lassen  

End Sub

Ich würde mich freuen, wenn mir jemand weiter helfen kann.
Mfg tommy

Content-Key: 130902

Url: https://administrator.de/contentid/130902

Printed on: April 25, 2024 at 08:04 o'clock

Member: Snowman25
Snowman25 Dec 03, 2009 at 16:18:32 (UTC)
Goto Top
probiers mal mit Call face-wink
also:
call GetProvision(intA, intB, strC, strD, boolE, boolF, dblG, dblH, strJ) 

wäre aber möglich, dass du die werte alle als Variant übergeben musst..
Member: AndreasHoster
AndreasHoster Dec 03, 2009 at 16:20:57 (UTC)
Goto Top
In der Hilfe mal den Unterschied zwischen einer Sub und einer Function nachlesen.
Aus der Hilfe:
Verwenden von Klammern beim Aufruf von Function-Prozeduren

Damit Sie den Rückgabewert einer Funktion verwenden können, weisen Sie die Funktion einer Variablen zu, und schließen Sie die Argumente in Klammern ein. Beispiel:

Antwort3 = MsgBox("Sind Sie mit Ihrem Gehalt zufrieden?", 4, "Frage 3")

Wenn der Rückgabewert einer Funktion für Sie bedeutungslos ist, können Sie eine Funktion auf die gleiche Weise aufrufen, wie Sie eine Sub-Prozedur aufrufen. Lassen Sie die Klammern weg, listen Sie die Argumente auf, und weisen Sie die Funktion keiner Variablen zu. Beispiel:

MsgBox "Aufgabe erledigt!", 0, "Aufgabe-Dialogfeld"

Vorsicht Wenn Sie im vorhergehenden Beispiel Klammern angeben, verursacht die Anweisung einen Syntax-Fehler.


Also einfach:
GetProvision intA, intB, strC, strD, boolE, boolF, dblG, dblH, strJ
Und sich überlegen, ob man nicht eine Sub statt einer Function haben will.