Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1032to1036
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Paramterübergabe versagte bei ByRef und ben. Arg.?

Paramterübergabe versagte bei ByRef und ben. Arg.?
22.12.2008 01:32:00
Dirk
Hallo,
ich experimentiere gerade mit der Parameterübergabe. Im ersten Beispiel hat c den Wert 16 in _
p>

Sub test, nachdem er testa1 durchlaufen hat (so soll es sein).
Im zweiten Beispiel Test arbeite ich mit benannten Argumenten. Leider bleibt hier c=4, obwohl
ich den Wert in testa1 mit ByRef definiere.
a) Geht dies bei benannten Argumenten nicht? (Rückgabewerte?)
b) Wenn ja, warum eigentlich nicht.
Dies ist nur ein Beispiel und könnte sicherlich einfach mit 

Function gelöst werden. Ich bin aber an einem komplexeren Beispielt, bei dem ich drei Rü _
ckgabewerte benötige. Und zur Berechnung dieser sind 6 Parameter notwendig, die ich eigentlich   _
_
benannt übergeben möchte.


Sub test()
c = 4
aa=7
bb=9
call testa1(aa ,bb , c)
End Sub



Sub test()
c = 4
Call testa1(aa:=7, bb:=9, c:=5)
End Sub



Sub testa1(ByVal aa, ByVal bb, ByRef c)
c = aa + bb
End Sub


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Paramterübergabe versagte bei ByRef und ben. Arg.?
22.12.2008 02:33:41
Nachtschwärmer
Hi
folgender Grund:
im 2. Beispiel übergibst du keine Variablen, sondern nur feste Werte, dh. es gibt keine Referenz.
daher wird in testa1 eine neue Variable c aufgemacht, dh du hast jetzt 2 Variablen c, eine gültig für test und eine gültig für testa1.
diese haben den zwar den gleichen Namen, sind aber völlig unabhängig voneinander.
Beim Benden von testa1 werden die für diese Sub gültigen Variablen wieder gelöscht, somit hat c wieder den ursprünglichen Wert
wenn du dein Beispiel so abänderst:
Call testa1(aa:=7, bb:=9, c:=c)
besteht wieder eine Referenz und es wird keine neue Variable aufgemacht und c in test erhält auch denn neuen Wert 16
Schlaft gut
Anzeige
AW: Paramterübergabe versagte bei ByRef und ben. Arg.?
22.12.2008 10:29:00
Tino
Hallo,
soweit ich es weis ist ByRef die Standarteinstellung und ByVal muss angegeben werden wenn sich der Parameter im Aufrufeprogramm nicht ändern soll.
Zwei Beispiele.
Beispiel 1:ByRev Wert wird im Programm verändert
Sub Test2()
Dim i As Integer
    i = 10
    byTest2 i
 MsgBox i
End Sub

Sub byTest2(ii As Integer)
 ii = ii + 10
End Sub


Beispiel2: ByVal Wert bleibt im Programm unverändert

Sub Test1()
Dim i As Integer
    i = 10
    byTest i
 MsgBox i
End Sub

Sub byTest(ByVal ii As Integer)
 ii = ii + 10
End Sub


Gruß Tino

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige