Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Rückgabewert eines Sub?

Forumthread: Rückgabewert eines Sub?

Rückgabewert eines Sub?
11.08.2005 17:34:21
klamsi
Hi leutz ^^
Wisst ihr wie ich einem Public Sub einen Rückgabewert geben kann?
Hab da nämlich son

Private Sub Cmd_Click()
Application.Run "UserForm1_Start" 'Sprung zum Modul: UserForm1_Start
End Sub

Wo kann ich von dem UserForm1_start einen Wert zurückgegeben lassen?
Thx, For Help,
Klamis
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Rückgabewert eines Sub?
11.08.2005 17:58:03
Ralf
Hallo Klamis,
über eine Prozedur, egal ob Public oder nicht, kannst Du keinen Rückgabewert erhalten. Das geht nur über eine Funktion.
Bsp.:
Sub x()
Dim a%, b%
b = 28
a = rechnen (b) + 25 'Aufruf der Funktion rechnen mit dem Parameter b
Msgbox a
End Sub
'Jetzt die Funktion:

Private Function rechnen(Zahl as Integer) as Integer
rechnen = Zahl * 2
End Function

Dabei muß die Variable a in der Prozedur den gleichen Datentyp besitzen wie der, den die Funktion zurückgibt (hier Integer). Der übergebene Parameter (hier b in der Prozedur) muß dem im Funktionskopf deklarierten entsprechen. Zu beachten ist auch, daß bei mehreren Parametern die Reihenfolge und der Datentyp der einzelnen Parameter eingehalten wird.
Ciao, Ralf
Anzeige
AW: Rückgabewert eines Sub?
11.08.2005 17:58:06
PeterW
Hallo Klamis,
beispielsweise mit einer Public Variablen. Was du in der UserForm1_Start noch alles anstellst kann man nicht ahnen.
Gruß
Peter
AW: Rückgabewert eines Sub?
11.08.2005 21:41:29
KLamsi
Oki ^^
Danke für die Hile ^^
Ich habs hinbekommen was ich wollt ^^
Dafür gibtz nen Bienchen ;-)
Thx,
Klamsi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Rückgabewert in VBA Sub und Funktionen


Schritt-für-Schritt-Anleitung

Um in VBA einen Rückgabewert von einem Sub zu erhalten, solltest Du stattdessen eine Function verwenden. Hier sind die Schritte:

  1. Erstelle eine Funktion: Definiere eine Function, die den gewünschten Rückgabewert bietet.

    Private Function rechnen(Zahl As Integer) As Integer
       rechnen = Zahl * 2
    End Function
  2. Rufe die Funktion im Sub auf: Verwende die Funktion innerhalb Deines Sub, um den Wert zu erhalten.

    Sub x()
       Dim a As Integer, b As Integer
       b = 28
       a = rechnen(b) + 25 ' Aufruf der Funktion
       MsgBox a
    End Sub
  3. Parameterübergabe: Stelle sicher, dass die übergebenen Parameter den Datentypen und der Reihenfolge entsprechen, die in der Funktion definiert sind.


Häufige Fehler und Lösungen

  • Fehler: "Sub kann keinen Rückgabewert haben"
    Lösung: Verwende eine Function anstelle eines Sub. Sub in VBA kann keine Rückgabewerte zurückgeben.

  • Fehler: "Datentypen stimmen nicht überein"
    Lösung: Überprüfe die Datentypen der Variablen und Parameter, um sicherzustellen, dass sie übereinstimmen.


Alternative Methoden

Eine weitere Methode, um Werte zwischen Sub und Function zu übergeben, ist die Verwendung von Public Variablen. Hier ein Beispiel, wie Du dies umsetzen kannst:

Public Ergebnis As Integer

Sub Cmd_Click()
    UserForm1_Start
    MsgBox Ergebnis
End Sub

Sub UserForm1_Start()
    Ergebnis = 100 ' Wert setzen
End Sub

Diese Methode erlaubt es Dir, den Wert nach dem Aufruf des Sub zu nutzen.


Praktische Beispiele

Hier sind einige praktische Beispiele, um die Verwendung von Rückgabewerten in VBA zu veranschaulichen:

  1. Einfacher Rückgabewert:

    Private Function addiere(a As Integer, b As Integer) As Integer
       addiere = a + b
    End Function
    
    Sub Beispiel()
       MsgBox addiere(5, 10) ' Gibt 15 zurück
    End Sub
  2. Verwendung von Sub mit Parameter:

    Sub zeigeErgebnis()
       Dim ergebnis As Integer
       ergebnis = addiere(5, 10)
       MsgBox "Das Ergebnis ist: " & ergebnis
    End Sub

Tipps für Profis

  • Verwende Public Variablen: Wenn Du Werte zwischen mehreren Sub oder Function teilen möchtest, sind Public Variablen nützlich.

  • VBA Funktion mit Rückgabewert: Halte Deine Funktionen modular und spezifisch, um die Lesbarkeit und Wartbarkeit Deines Codes zu verbessern.

  • Vermeide globale Variablen: Wenn möglich, beschränke die Verwendung von globalen Variablen, um unerwartete Nebenwirkungen zu verhindern.


FAQ: Häufige Fragen

1. Kann ich einen Rückgabewert von einem Sub bekommen?
Nein, ein Sub in VBA kann keinen Rückgabewert liefern. Verwende stattdessen eine Function.

2. Wie definiere ich eine Funktion in VBA?
Eine Funktion wird mit dem Schlüsselwort Function und dem Rückgabewerttyp definiert, z.B. Private Function berechneWert() As Integer.

3. Was ist der Unterschied zwischen Sub und Function?
Ein Sub führt eine Aktion aus, während eine Function einen Wert zurückgibt, den Du weiterverarbeiten kannst.

4. Kann ich mehrere Werte aus einer Funktion zurückgeben?
Ja, Du kannst mehrere Werte durch die Verwendung von Public Variablen oder durch die Rückgabe von benutzerdefinierten Typen zurückgeben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige