Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1184to1188
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

call or not call...

call or not call...
CitizenX
that is the question...
Hallo Zusammen
könnt ihr mir folgendes Verhalten bei der Parameterübergabe erklären.
Mit der Verwendung von call findet eine Übergabe statt ,ohne nicht ?
Warum ist das so?
Option Explicit
'Übergabe erfolgt
Sub test1()
Dim Wert1%
Wert1 = 1
Call dblwert1(Wert1)
Debug.Print Wert1
End Sub
Function dblwert1(Zahl1%)
Zahl1 = Zahl1 * 2
End Function

'keine übergabe
Sub test2()
Dim Wert2%
Wert2 = 1
'ohne call
dblwert2 (Wert2)
Debug.Print Wert2
End Sub
Function dblwert2(Zahl2%)
Zahl2 = Zahl2 * 2
End Function

Grüße
Steffen

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: call or not call...
09.11.2010 13:54:34
gerwas
Hallo
lass mal ohne Call die Klammer weg...
Gruß gerwas
uups..,danke! owT
09.11.2010 14:18:23
CitizenX
AW: uups..,danke! owT
09.11.2010 14:35:53
MichaV
Hallo,
nur als Anmerkung, die Antwort wurde ja schon gegeben:
Du vermauschelst Sub und Function. Mit einer Function arbeitest Du im Idealfall so:

Sub test2()
Dim Wert2%
Wert2 = 1
Wert2 = dblwert2(Wert2)
Debug.Print Wert2
End Sub
Function dblwert2(Zahl2%)
dblwert2 = Zahl2 * 2
End Function

Oder Du machst aus Deiner Function eine Sub.
Gruss- Micha
Welche Antwort, Micha?
09.11.2010 15:36:03
Luc:-?
Die einzige qualifizierte Antwort außer deiner ist die von Nepumuk und die kam erst nach deiner bzw zeitgleich… Außerdem geht sie nicht auf den Unterschied zwischen Funktion und Subroutine ein.
Es ist doch immer wieder erstaunlich, was alles so versucht wird, ohne dass mancher sich die Mühe macht, mal in der VBE-Hilfe nachzulesen…!
Mit Gruß an dich aus dem düsteren B-B
Luc :-?
PS: Bei euch schneit's ja wohl schon, wenn der Wetterprognose zu trauen ist…! ;-)
Anzeige
AW: Welche Antwort, Micha?
09.11.2010 17:29:29
MichaV
Heisann,
nja, die Antwort wurde schon gegeben, denn durch das Weglassen (oder wie bei Nepumuk zusätzliche schlagen) der Klammern löst sich ja das Problem des Fragestellers. Und auf den Unterschied zwischen Sub und Function bin ich auch nicht eingegangen :o)
@Nepumuk: warum geht call meine_sub ((a,b,c)) nicht?
Gruss- Micha
PS: 25cm Schnee und schweinekalt, -10grad morgens
((a),(b))
09.11.2010 17:30:47
MichaV
@Nepumuk: vergiss meine Frage ;o)
Na dann, gut schipp! ;-) Gruß owT
09.11.2010 17:56:12
Luc:-?
:-?
nachtrag
09.11.2010 17:34:58
MichaV
so macht es mehr Sinn, und der Unterschied zur Sub wird deutlicher:

Sub test2()
Debug.Print dblwert2(1)
End Sub
Function dblwert2(Zahl2%)
dblwert2 = Zahl2 * 2
End Function

Gruss- Micha
Anzeige
Na sowas ;) mir geht ein Licht auf k.t.
09.11.2010 14:24:53
Holger
AW: call or not call...
09.11.2010 14:46:03
ing.grohn
Hallo Steffen,
ich mach das bei Funktionen so:
Sub test1()
Dim Wert1%
Wert1 = 1
Debug.Print dblwert1(Wert1)
End Sub
Function dblwert1(Zahl1%)
dblwert1 = Zahl1 * 2
End Function
Meines Wissens benutzt man call, wenn man bei Prozeduren
mehrer Werte übergeben muß.
Mit freundlichen Grüßen
Albrecht
AW: call or not call...
09.11.2010 14:24:06
Holger
Hallo,
aus meiner Erfahrung müssen Module mit Parameter mit Call aufgerufen werden,
warum weiß ich leider auch nicht.
AW: call or not call...
09.11.2010 14:37:19
Nepumuk
Hallo Holger,
nicht unbedingt. Aber: Die Klammer um den Parameter ohne Call ist wie ein doppelt geklammerter Parameter mit Call. Sprich der Parameter wird ByVal übergeben und kann daher keinen Wert aus der Unterroutine zurückliefern.
Sub test1()
    Dim Wert1%
    Wert1 = 1
    Call dblwert1((Wert1))
    Debug.Print Wert1
End Sub

Function dblwert1(Zahl1%)
    Zahl1 = Zahl1 * 2
End Function

Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige