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

Rückgabewert bei Methoden/Funktionen

Forumthread: Rückgabewert bei Methoden/Funktionen

Rückgabewert bei Methoden/Funktionen
15.03.2005 11:58:41
Firat
Hallo zusammen,
habe eine generelle Frage:
Wie sieht es aus wenn ich Funktionen oder Methoden vom Hauptprogramm abkapseln will und von diesen einen Rückgabewert erhalte!?
Ich kenn bisher nur Methoden, die keinen Rückgabewert haben (z. B. Sortieralgorithmus), dann sehe es in meinem Quellcode so aus:

Sub Hauptprogramm ()
Call Sortieren
End Sub


Sub Sortieren ()
End Sub

Wie sieht es denn aus wenn ich einen Rückgabewert habe? Gibt es eine return-funktion? Habe es eben mit folgender Darstellung probiert, hat aber nicht geklappt:

Sub Hauptprogramm ()
abc = Nebenprogramm(Wert) 'Übergebe dem Nebenprogramm einen Wert zum berechnen.
End Sub


Sub Nebenprogramm (wert)
End Sub

und was macht es für ein Unterschied, wenn ich

Sub oder 

Function nehme!?
DAnke...

		
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Rückgabewert bei Methoden/Funktionen
15.03.2005 12:04:57
Bert
Die Function liefert einen Rückgabewert, die Sub nicht.
Bert
AW: Rückgabewert bei Methoden/Funktionen
15.03.2005 12:06:49
Firat
und gibt es bei der funktion ein "return" oder sowas?!
wie kann ich denn vom Hauptprogramm auf den Rückgabewert zugreifen!?
abc = funktion() !? oder?
AW: Rückgabewert bei Methoden/Funktionen
15.03.2005 12:08:06
Domke,
Hallo Firat,
dafür gibt es Funktionen!

Function Summe(lngA as Long, lngB as Long) as long
Summe = lngA + lngB
End Function

Test:
lngC = Summe(13,14)
Der Wert wird zurückgegeben, indem er dem Funktionsnamen zugewiesen wird.
Viel Spaß
Frank.
Anzeige
AW: Rückgabewert bei Methoden/Funktionen
15.03.2005 12:15:56
Bert
Aber besser keine Namen verwenden, die von Excel verwendet werden.
Bert
AW: Rückgabewert bei Methoden/Funktionen
15.03.2005 13:31:49
Firat
Also, ich habe grad was versucht aber es klappt nicht ganz...

Sub Hauptprogramm ()
dim name as String
dim dateiname as String
name = Namefiltern(dateiname)
End Sub


Function Namefiltern (datei as String)
For Zaehler = Len(datei) To 1 Step -1 '
If Mid(datei, Zaehler, 1) = "\" Then
datei = Mid(datei, (Zaehler + 1), (Len(datei) - Zaehler))
Exit For
End If
Next Zaehler
End Function

Also es speichert nicht den Wert, den die Funktion übermittelt in "name". Ich kann erkennen, dass im Hauptprogramm der Rückgabewert (beim Debuggen) in dem Funktionsnamen steht.
Wo liegt der Fehler?
Anzeige
AW: Rückgabewert bei Methoden/Funktionen
15.03.2005 14:28:58
Bert
Option Explicit
Function Namefiltern(datei As String)
For Zaehler = Len(datei) To 1 Step -1 '
If Mid(datei, Zaehler, 1) = "\" Then
Namefiltern = Mid(datei, (Zaehler + 1), (Len(datei) - Zaehler))
Exit For
End If
Next Zaehler
End Function

Gruß Bert
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Rückgabewert bei VBA Funktionen und Subs


Schritt-für-Schritt-Anleitung

  1. Erstellen einer Funktion mit Rückgabewert
    Um eine VBA-Funktion zu erstellen, die einen Rückgabewert hat, verwenden wir die Function-Anweisung. Hier ist ein einfaches Beispiel:

    Function Summe(lngA As Long, lngB As Long) As Long
       Summe = lngA + lngB
    End Function
  2. Aufrufen der Funktion im Hauptprogramm
    Du kannst die Funktion in deinem Hauptprogramm wie folgt aufrufen:

    Sub Hauptprogramm()
       Dim Ergebnis As Long
       Ergebnis = Summe(5, 10) ' Ergebnis wird 15 sein
    End Sub
  3. Erstellen einer Sub ohne Rückgabewert
    Wenn du eine Subroutine (Sub) erstellst, die keinen Rückgabewert hat, sieht das so aus:

    Sub Sortieren()
       ' Sortierlogik hier
    End Sub
  4. Verwendung von Rückgabewerten in Subs
    Es ist wichtig zu beachten, dass eine Sub keinen Rückgabewert haben kann. Der Rückgabewert wird in einer Function definiert. Du kannst eine Subroutine jedoch verwenden, um Werte zu ändern oder Ergebnisse anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: Funktion gibt keinen Wert zurück
    Wenn du eine Funktion erstellt hast, aber keinen Wert zurückgibst, stelle sicher, dass du dem Funktionsnamen einen Wert zuweist. Beispiel:

    Function Beispiel() As String
      Beispiel = "Hallo" ' Rückgabewert
    End Function
  • Fehler: Verwendung eines Funktionsnamens
    Verwende keine Namen für deine Funktionen, die bereits von Excel verwendet werden, um Verwirrung zu vermeiden.

  • Fehler: Variablen nicht korrekt deklariert
    Achte darauf, dass alle Variablen korrekt deklariert sind, z.B. Dim name As String.


Alternative Methoden

  • VBA Funktion mit mehreren Rückgabewerten
    Um mehrere Rückgabewerte zu erhalten, kannst du die Werte in ein Array packen oder ein benutzerdefiniertes Objekt verwenden. Hier ist ein Beispiel mit einem Array:

    Function MehrereRückgabewerte() As Variant
      Dim Ergebnisse(1 To 2) As Long
      Ergebnisse(1) = 10
      Ergebnisse(2) = 20
      MehrereRückgabewerte = Ergebnisse
    End Function
  • VBA Sub mit Rückgabewert simulieren
    Du kannst eine Subroutine verwenden, um Werte über Parameter zu übergeben, anstatt einen Rückgabewert zu nutzen:

    Sub Berechne(ByRef Ergebnis As Long)
      Ergebnis = 5 * 2
    End Sub

Praktische Beispiele

  • Beispiel für eine einfache Funktion
    Hier ist eine einfache Funktion, die den Quadrat eines Wertes zurückgibt:

    Function Quadrat(Wert As Double) As Double
      Quadrat = Wert * Wert
    End Function
  • Aufruf der Funktion im Hauptprogramm
    Um das Quadrat eines Wertes zu berechnen, kannst du die Funktion so aufrufen:

    Sub Hauptprogramm()
      Dim Ergebnis As Double
      Ergebnis = Quadrat(4) ' Ergebnis ist 16
    End Sub

Tipps für Profis

  • Verwende Option Explicit
    Um sicherzustellen, dass alle Variablen deklariert sind, solltest du am Anfang deiner Module Option Explicit hinzufügen.

  • Namen klar und eindeutig halten
    Vermeide es, Namen zu verwenden, die von Excel bereits verwendet werden, um Konflikte zu vermeiden.

  • VBA-Funktion aufrufen mit Parameter
    Wenn du eine Funktion mit Parametern aufrufen möchtest, stelle sicher, dass du diese korrekt übergibst, um unerwartete Ergebnisse zu vermeiden.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen einer Sub und einer Function?
Eine Sub führt eine Aktion aus, gibt aber keinen Rückgabewert zurück. Eine Function hingegen berechnet einen Wert und gibt diesen zurück.

2. Wie kann ich auf den Rückgabewert einer Funktion zugreifen?
Du kannst den Rückgabewert einer Funktion dem Funktionsnamen zuweisen, z.B. Ergebnis = MeineFunktion().

3. Kann ich mehrere Rückgabewerte aus einer Funktion erhalten?
Ja, du kannst mehrere Rückgabewerte erhalten, indem du ein Array oder ein benutzerdefiniertes Objekt verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige