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

Forumthread: VBA Funktion mit mehreren Argumenten

VBA Funktion mit mehreren Argumenten
30.01.2023 12:02:33
Wiggi
Hallo zusammen,
Erst einmal Danke für dieses Forum. Es hat mir in den letzten Jahren schon unglaublich oft geholfen. Leider bin ich dieses mal nicht fündig geworden obwohl das Thema eigentlich recht einfach ist, Ich möchte eine Funktion erweitern, so das zwei weitere Parameter mit über geben werden. Bisher sieht die Funktion so aus :
Function func_Curve(ByRef sLinie As String)
Der Aufruf selbst im Sub so:
func_Curve (Sheets("Daten").Cells(nRow, 2).Value)
Das ganze wird sauber abgearbeitet.
Nun möchte ich das ganze mit zwei weiteren Werten übergeben und habe mir das ganze so vorgestellt:
Function func_Curve(ByRef sLinie As String, X_Koord As Double, Y_Koord As Double)
Füge ich nun den folgenden Aufruf hinzu:
func_Curve (Sheets("Daten").Cells(nRow, 2).Value, fxZuschnitt ,fyZuschnitt)
wird er rot makiert und die Fehlermeldung :
---
Fehler beim Kompelieren:
Erwarte: =
---
Kann mir jemand erklären was ich falsch mache ?
Ich habe mal nicht den gesamten Code hier rein kopiert da er glaube ich nicht helfen würde.
Vielen Dank im Vorraus
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Funktion mit mehreren Argumenten
30.01.2023 12:16:43
Daniel
Hi
Wenn du keinen Rückgabewert hast, solltest du das Ganze als Sub schreiben und nicht als Function.
Auch bei Subs kann man Übergabeparameter definieren.
Auch sonst sind Sub und Function abgesehen vom Übergabeparamter sehr ähnlich.
Prinzipiell ist es in VBA so, dass in Programmzeilen, die aus einer einzigen Anweisung bestehen, die Übergabeparameter nicht in Klammern gesetzt werden.
Dh, wenn du die Sub xxx hast dann entweder
xxx Parameter1, Parameter2
Oder
Call xxx(Parameter1, Parameter2)
Gruß Daniel
Anzeige
AW: VBA Funktion mit mehreren Argumenten
30.01.2023 12:27:43
GerdL
Hallo Wiggi,
belässt du es bei einer Function, gibst du entweder mit Variable= einen Rückgabewert vor oder rufst sie mit Call auf.
Die Parameter solltest du dann eher ByVal in der Funktion übernehmen.
Gruß Gerd
AW: VBA Funktion mit mehreren Argumenten
01.02.2023 07:52:27
Wiggi
Alles klar .. vielen Dank für eure schnelle Hilfe
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Funktion mit mehreren Argumenten in Excel


Schritt-für-Schritt-Anleitung

  1. Funktion erstellen: Beginne damit, eine Funktion in VBA zu erstellen, die mehrere Parameter akzeptiert. Das Grundgerüst sieht so aus:

    Function func_Curve(ByRef sLinie As String, ByVal X_Koord As Double, ByVal Y_Koord As Double) As Double
        ' Deine Logik hier
    End Function
  2. Rückgabewert definieren: Wenn deine Funktion einen Rückgabewert haben soll, musst du den Datentyp angeben, wie im Beispiel oben (hier als Double).

  3. Funktion aufrufen: Um die Funktion korrekt aufzurufen, gibt es zwei Möglichkeiten:

    • Direkter Aufruf (ohne Klammern):
      func_Curve Sheets("Daten").Cells(nRow, 2).Value, fxZuschnitt, fyZuschnitt
    • Mit Call (mit Klammern):
      Call func_Curve(Sheets("Daten").Cells(nRow, 2).Value, fxZuschnitt, fyZuschnitt)

Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Wenn du die Fehlermeldung „Erwarte: =“ erhältst, kann das darauf hinweisen, dass du die Parameter in Klammern gesetzt hast, ohne die Funktion mit Call aufzurufen. Stelle sicher, dass du die Parameter korrekt übergibst.

  • Kein Rückgabewert: Wenn deine Funktion keinen Rückgabewert liefert, solltest du stattdessen ein Sub verwenden. In diesem Fall könnte dein Code so aussehen:

    Sub func_Curve(ByRef sLinie As String, ByVal X_Koord As Double, ByVal Y_Koord As Double)
        ' Deine Logik hier
    End Sub

Alternative Methoden

Eine andere Möglichkeit, eine vba oder funktion mit mehreren Argumenten zu erstellen, besteht darin, ein Sub zu verwenden und die Parameter dort zu definieren. Das könnte zum Beispiel so aussehen:

Sub MySub(ByVal param1 As String, ByVal param2 As Double)
    ' Logik hier
End Sub

Du kannst dann diese Subroutine aufrufen, indem du die Parameter direkt übergibst.


Praktische Beispiele

Hier ist ein einfaches Beispiel für eine VBA-Funktion, die den Durchschnitt von zwei Werten berechnet und einen Rückgabewert hat:

Function Average(X As Double, Y As Double) As Double
    Average = (X + Y) / 2
End Function

Du kannst diese Funktion in einem Sub so aufrufen:

Sub TestAverage()
    Dim avg As Double
    avg = Average(10, 20)
    MsgBox "Der Durchschnitt ist: " & avg
End Sub

Tipps für Profis

  • Parameter ByRef vs. ByVal: Überlege, ob du ByRef oder ByVal verwenden möchtest. ByRef übergibt eine Referenz auf die Variable, was bedeutet, dass Änderungen in der Funktion die Originalvariable beeinflussen. ByVal hingegen übergibt eine Kopie der Variable.

  • Debugging: Nutze Debug.Print innerhalb deiner Funktion, um Werte während der Ausführung in das Direktfenster auszugeben. So kannst du leichter Fehler finden.


FAQ: Häufige Fragen

1. Wie kann ich eine VBA Funktion ohne Rückgabewert erstellen?
Du solltest ein Sub verwenden. Achte darauf, die Parameter korrekt zu definieren.

2. Warum bekomme ich eine Fehlermeldung beim Aufrufen der Funktion?
Das kann daran liegen, dass du die Parameter in Klammern gesetzt hast, ohne Call zu verwenden. Stelle sicher, dass du die Syntax korrekt anwendest.

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