Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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 Function Übergabe

Call Function Übergabe
14.11.2022 08:13:07
Shouchen
Hallo allerseits,
ich habe erneut Probleme:
Ich habe eine Function, in die ich einen String und zwei Integer Werte übergebe.
Der Funktionskopf sieht somit wie folgt aus:

Function Bereichgr(ByRef vorz() As String, ByVal x As Integer, ByVal y As Integer) As Boolean
Das funktioniert auch.
Nun kann ich nicht wie es bisher gewohnt war, meine Function als Rückgabewert direkt auslesen, sondern muss Sie via Call aufrufen:

Call Bereichgr(vorz, x, y)
Ich habe absichtlich einen Großteil des Codes weggelassen, weil ich glaube, das würde nur zur Verwirrung beitragen.
Für mich ist die Frage: Wie bekomme ich den Boolean Wert ausgelesen, in dem Codeteil, in dem ich die Function ursprünglich mit dem Call aufrufe?
Ich habe leider dazu noch nichts sinnvolles gefunden und schon rumprobiert mit sowas wie:

Dim a As Boolean
a = False
a = Call Bereichgr(vorz, x, y)
Das will der Compiler aber garnicht.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Call Function Übergabe
14.11.2022 08:33:00
ChrisL
Hi
Wieso musst du die Funktion mit Call aufrufen?

Sub t()
Dim vorz(0 To 1) As String
Dim x As Integer, y As Integer
vorz(0) = "a"
vorz(1) = "b"
x = 1
y = 2
MsgBox Bereichgr(vorz, x, y)
End Sub

Function Bereichgr(ByRef vorz() As String, ByVal x As Integer, ByVal y As Integer) As Boolean
Bereichgr = True
End Function
cu
Chris
AW: Call Function Übergabe
14.11.2022 08:48:57
Shouchen
Hallo Chris,
danke für die schnelle Antwort.
Ich schreibe mal ein bisschen mehr vom Code, wenn ich es so aufrufe, dann kommt die Fehlermeldung beim Aufrufen der Funktion "Bereichgr" "Objekt erforderlich".

Sub Wandern(ByRef x As Integer, ByRef y As Integer, ByRef Gr() As String)
'Größe des Objekts auslesen
Dim x1 As Integer
x1 = Gr(0, 0)
Dim y1 As Integer
y1 = Gr(0, 1)
'Array für Vorzeichenfestlegung
Dim vorz(7, 1) As String
'Links
vorz(0, 0) = 0
vorz(0, 1) = -1
'Rechts
vorz(1, 0) = 0
vorz(1, 1) = 1
'Oben
vorz(2, 0) = -1
vorz(2, 1) = 0
'Unten
vorz(3, 0) = 1
vorz(3, 1) = 0
'LinksOben
vorz(4, 0) = -1
vorz(4, 1) = -1
'RechtsOben
vorz(5, 0) = -1
vorz(5, 1) = 1
'LinksUnten
vorz(6, 0) = 1
vorz(6, 1) = -1
'Rechtsunten
vorz(7, 0) = 1
vorz(7, 1) = 1
'Zufällig Links / Rechts / Oben / Unten / LinksOben / RechtsOben / LinksUnten / Rechtsunten
Dim zu As Integer
zu = Int(0 + Rnd * (7 - 0 + 1))
MsgBox (Bereichgr(vorz, x, y))
'Position abwandern
For i = 0 And a To 7
If i = zu Then
x = x - vorz(zu, 0) + Abrunden(y1 / 2)
y = y - vorz(zu, 1) + Abrunden(x1 / 2)
'Begrenzung des Feldes
If x = 75 Or y >= 75 Then
x = 35
y = 35
End If
End If
Next
End Sub

Function Bereichgr(ByRef vorz() As String, ByVal x As Integer, ByVal y As Integer) As Boolean

Anzeige
AW: Call Function Übergabe
14.11.2022 08:51:52
Oberschlumpf
Hi,
a) schreib mal anstelle von...

MsgBox (Bereichgr(vorz, x, y))
...das hier...

MsgBox Bereichgr(vorz, x, y)
...hilfts?
Nein?
Dann zeig per Upload eine Bsp-Datei mit Bsp-Daten mit deinem Code.
Ciao
Thorsten
AW: Call Function Übergabe
14.11.2022 09:55:46
Shouchen
Hallo,
ich muss sagen, mal den Code ein bisschen zu Extrahieren hat es gebracht.
Ich hatte noch etwas anderes "dummes" in der Funktion drinnen gelassen, eine nicht deklarierte Variable und daher wurde gemeckert bei der Ausführung.
Vielen Dank für die Hilfe
Benni
Anzeige
AW: Call Function Übergabe
14.11.2022 08:58:45
GerdL
Moin,
von MS
Hinweise
Sie müssen das Call-Schlüsselwort beim Aufrufen einer Prozedur nicht verwenden. Wenn Sie das Call-Schlüsselwort jedoch verwenden, um eine Prozedur aufzurufen, die Argumente erfordert, muss argumentlist in Klammern eingeschlossen werden. Wenn Sie das Call-Schlüsselwort weglassen, müssen Sie auch die Klammern um argumentlist weglassen. Wenn Sie eine Call-Syntax verwenden, um eine systeminterne oder eine benutzerdefinierte Funktion aufzurufen, wird der Rückgabewert der Funktion verworfen.
Gruß Gerd
AW: Call Function Übergabe
14.11.2022 09:02:12
Shouchen
Hallo Gerd,
vielen lieben Dank!
Der Hinweis, dass das Call Schlüsselwort den Wert verwirft, ist ungemein hilfreich.
Vielen lieben Dank
Shouchen
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige