Word VBA: Sub mit Wertübergabe möglich?

Hallo zusammen,

gibt es eine Möglichkeit, einer Prozedur Werte zu übergeben bzw. von
einer Prozedur Werte zu erhalten?
So à la:

Private Sub Test(Variable1; Variable2)
 ' Verarbeitung
 Return a
End Sub

Ich möchte eine Prozedur nutzen, um etwas zu verarbeiten, ohne dass
der Benutzer sie sehen kann (deshalb »Private«). Und sie soll ein am
Ablaufende ein Array an die Prozedur übergeben, die sie aufgerufen
hat.

Geht sowas? Oder muss ich Globale Variablen benutzen…?

Danke
und Gruß
Tobias

Hallo zusammen,

Hallo auseinander.

gibt es eine Möglichkeit, einer Prozedur Werte zu übergeben bzw. von
einer Prozedur Werte zu erhalten?

Ja bzw. nein.

Private <u><b>Function</b></u> Test(Variable1<u><b>,</b></u> Variable2)
 ' Verarbeitung
<u><b>Test =</b></u> a
End <u><b>Function</b></u>

Ich möchte eine Prozedur nutzen, um etwas zu verarbeiten, ohne dass
der Benutzer sie sehen kann (deshalb »Private«). Und sie soll
am Ablaufende ein Array an die Prozedur übergeben, die sie
aufgerufen hat.

Variablen werden mit Komma, nicht mit Semikolon getrennt (im VB- Code). Und eine Wertübergabe aus einer Prozedur ist in der Tat nur durch Schreiben in eine globale Variable möglich. Deswegen habe ich eine Function aus Deiner Sub gemacht … sollte eigentlich funktionieren. Vorsicht beim Hin- und Herbeamen des Arrays hinsichtlich der Dimensionierung!

Gruß kw

Hallo Oki,

Einspruch Euer Ehren:

Und eine Wertübergabe aus einer Prozedur ist in der
Tat nur durch Schreiben in eine globale Variable möglich.

Es gibt da noch den feinen Unterschied zwischen ByVal und ByRef, siehe folgendes Beispiel:

Option Explicit

Sub Test()
Dim x%, y%
x = 1
y = 2
Unter x, y
Debug.Print x
Debug.Print y
End Sub

Private Sub Unter(ByRef x As Integer, ByVal y As Integer)
x = x + y
y = y + y
End Sub

Gruß
Daniel

1 Like