Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mehrere Werte an Funktion übergeben ohne Rückgabew

Mehrere Werte an Funktion übergeben ohne Rückgabew
10.08.2004 17:26:58
Katja
Hallo zusammen
Ich habe folgendes Problem:
Ich möchte meiner Funktion oder Procedure 2 Werte übergeben, ich brauche aber keinen Rückgabewert.
'----------------------------------

Sub Power
Ausgeben(Wert1, Wert2)
End Sub

'----------------------------------

Function Ausgeben (Wert3, Wert4)
End Function

'----------------------------------
Den Befehl "Ausgeben(Wert1, Wert2)" wird rot markiert.
Wer kann mir helfen? Vielen Dank im voraus!
Gruss Katja
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Das ist Missbrauch einer Function...
Boris
Hi Katja,
...die eben darauf ausgelegt ist, einen Wert zurückzugeben.
Wenn du keinen Rückgabewert brauchst, dann starte doch einfach ne andere Sub und eben keine Function...
Grüße Boris
Call Ausgeben(Wert1, Wert2) - o. T.
Björn
Da stand "VBA gut"...oT
Boris
Grüße Boris
Anzeige
AW: Da stand "VBA gut"...oT
Katja
Hallo Boris
Danke! Es hat inzwischen geklappt. Da ich schon lange nicht mehr VBA programmiert habe, darf man doch Anfangsschwierigkeiten haben, oder nicht? Und anstatt Stunden mit suchen zu verbringen, habe ich mal die "Profis" gefragt...
Gruss Katja
AW: Mehrere Werte an Funktion übergeben ohne Rückgabew
Bert
wenn du keinen Rückgabewert brauchst, nimm eine Sub. Die Übergabe der Argumente:

Sub Power
Ausgeben Wert1, Wert2
End Sub

oder:

Sub Power
Call Ausgeben(Wert1, Wert2)
End Sub

Gruß Bert
Anzeige
RS232
Katja
Danke Bert!
Das ist doch mal eine Antwort, mit welcher man auch was anfangen kann. Frage: Kennst du dich aus mit RS232 Schnittstelle ansprechen von VBA? Gibt es so etwas wie eine Interrupt Funktion, wie z.B. in C/C++?
;
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Werte an Funktion übergeben ohne Rückgabewert


Schritt-für-Schritt-Anleitung

Wenn Du in VBA eine Subroutine (Sub) hast, die mehrere Parameter benötigt, und Du dabei keinen Rückgabewert erwartest, folge diesen Schritten:

  1. Definiere Deine Subroutine: Erstelle eine Subroutine, die die gewünschten Parameter akzeptiert. Wenn Du mehrere Werte übergeben möchtest, kannst Du diese direkt in der Subroutine definieren.

    Sub Power(Wert1 As Variant, Wert2 As Variant)
       Ausgeben Wert1, Wert2
    End Sub
  2. Erstelle die Funktion: Deine Funktion, die die Werte verarbeitet, kann so aussehen. Beachte, dass es keine Rückgabewerte gibt.

    Sub Ausgeben(Wert3 As Variant, Wert4 As Variant)
       ' Hier kannst Du die Werte verarbeiten
    End Sub
  3. Rufe die Subroutine auf: Um die Subroutine zu starten, verwendest Du einen Funktionsaufruf.

    Call Power(10, 20)

Häufige Fehler und Lösungen

Ein häufiges Problem, das Benutzer erleben, ist die Verwendung einer Funktion (Function) anstelle einer Subroutine (Sub), wenn kein Rückgabewert benötigt wird. Hier sind einige Lösungen:

  • Problem: Der Befehl Ausgeben(Wert1, Wert2) wird rot markiert.
    • Lösung: Stelle sicher, dass Du eine Subroutine verwendest, nicht eine Funktion, wenn Du keinen Rückgabewert benötigst.
    • Verwende Call Ausgeben(Wert1, Wert2) oder einfach Ausgeben Wert1, Wert2.

Alternative Methoden

Falls Du lieber eine Funktion verwenden möchtest, die mehrere Rückgabewerte liefern kann, könntest Du ein Array oder ein benutzerdefiniertes Typ verwenden:

  1. Array zurückgeben:

    Function BerechneWerte(Wert1 As Double, Wert2 As Double) As Variant
       Dim Ergebnisse(1 To 2) As Double
       Ergebnisse(1) = Wert1 + Wert2
       Ergebnisse(2) = Wert1 - Wert2
       BerechneWerte = Ergebnisse
    End Function
  2. Benutzerdefinierter Typ:

    Type ErgebnisseTyp
       Summe As Double
       Differenz As Double
    End Type
    
    Function Berechne(Wert1 As Double, Wert2 As Double) As ErgebnisseTyp
       Dim Ergebnisse As ErgebnisseTyp
       Ergebnisse.Summe = Wert1 + Wert2
       Ergebnisse.Differenz = Wert1 - Wert2
       Berechne = Ergebnisse
    End Function

Praktische Beispiele

Hier sind einige praktische Beispiele, um zu zeigen, wie Du die Parameter übergeben kannst:

  1. Subroutine ohne Rückgabewert:

    Sub Power(Wert1 As Integer, Wert2 As Integer)
       MsgBox "Die Summe ist: " & Wert1 + Wert2
    End Sub
  2. Funktion mit mehreren Rückgabewerten:

    Function Berechne(Wert1 As Double, Wert2 As Double) As Double()
       Dim Ergebnisse(1 To 2) As Double
       Ergebnisse(1) = Wert1 + Wert2
       Ergebnisse(2) = Wert1 - Wert2
       Berechne = Ergebnisse
    End Function

Du kannst nun die Rückgabewerte wie folgt verwenden:

Dim Ergebnisse() As Double
Ergebnisse = Berechne(10, 5)
MsgBox "Summe: " & Ergebnisse(1) & ", Differenz: " & Ergebnisse(2)

Tipps für Profis

  • Verwende ByRef und ByVal: Achte darauf, ob Du die Parameter als Referenz oder Wert übergeben möchtest. ByRef ist standardmäßig, bedeutet, dass Änderungen an den Parametern auch außerhalb der Subroutine sichtbar sind.
  • Dokumentation: Kommentiere Deinen Code, um die Verwendung der Parameter klar zu machen, insbesondere wenn mehrere Parameter beteiligt sind.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Probleme bei der Parameterübergabe frühzeitig zu erkennen.

FAQ: Häufige Fragen

1. Kann ich mehrere Parameter an eine Funktion übergeben, die keinen Rückgabewert hat? Nein, eine Funktion ist darauf ausgelegt, einen Rückgabewert zu liefern. Verwende stattdessen eine Subroutine.

2. Wie rufe ich eine Subroutine mit mehreren Parametern auf? Du kannst die Subroutine mit dem Befehl Call oder direkt aufrufen. Zum Beispiel: Call Power(10, 20) oder Power 10, 20.

3. Was ist der Unterschied zwischen ByRef und ByVal? ByRef übergibt den Verweis auf die Variable, während ByVal den Wert der Variablen übergibt. Bei ByRef können Änderungen in der Subroutine die Originalvariable beeinflussen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige