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

Funktionsaufruf mit Parameter in Excel-Formel

Forumthread: Funktionsaufruf mit Parameter in Excel-Formel

Funktionsaufruf mit Parameter in Excel-Formel
31.01.2003 10:35:43
Christian Wimmer
Hallo,

gibt es eine Möglichkeit, in einer Formel eine Function MIT PARAMETER(N) aufzurufen und den Rückgabewert zum "steuern" der WENN-Bedingung zu verwenden?

z.B. =WENN(IstSchaltjahr(2000);"ja";"nein")

mit function IstSchaltjahr(byval integer zahl) as boolean
dim ok as boolean
if zahl ... (nur als beispiel)
ok = true
else
ok = false
end if
IstSchaltjahr = ok
end function

Vielen Dank,
Christian

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Funktionsaufruf mit Parameter in Excel-Formel
31.01.2003 12:19:48
Steffen D

Hi,

klar!

so gehts:

Function IstSchaltjahr(zahl As Integer) As Boolean
Dim ok As Boolean
If zahl .....
ok = True
Else
ok = False
End If
IstSchaltjahr = ok
End Function

Gruß
STeffen D

Re: Funktionsaufruf mit Parameter in Excel-Formel
31.01.2003 13:48:30
Christian Wimmer

Hallo Steffen,

ist gleich wie mein Makro (habe mich nur in der Deklaration der Parameter verschrieben :-). Funktioniert aber bei mir nicht.

Fehlermeldung in der Zelle wo die Abfrage steht: #WERT!

Hinzu kommt noch ein anderes Problem. Im Beispiel habe ich den Wert 2000 fix vorgegeben. Dieser Wert soll aber aus einer Zelle entnommen werden. Tja nur wie?

Ein Aufruf (Jahreszahl steht in Zelle G10) der Art

=WENN(IstSchaltjahr(G10);"ja";"nein")

funktioniert leider nicht, da ich ja nicht den Wert der Zelle sondern die Zeichenfolge "G10" übergebe (wäre ja auch zu einfach).

Hast Du irgendeine Idee, wo der Fehler liegen könnte bzw. ob dies überhaupt möglich ist?

M.f.G.
Christian

Anzeige
Re: Funktionsaufruf mit Parameter in Excel-Formel
31.01.2003 16:01:04
Hans W Hofmann

Kannst Du das Problem mal auf den Punkt bringen.
Eine entsprechende Funktion hab ich im Einsatz:

Also was ist das Problem?
Gruß HW


Re: Funktionsaufruf mit Parameter in Excel-Formel
02.02.2003 08:38:05
Christian Wimmer

Hallo Hans,

das Problem ist NICHT das Makro, sondern die Parameterübergabe an diese Makro-Funktion beim Aufruf derselben durch eine =WENN-Abfrage in einer Zelle eines Arbeitsblatts.

In Zelle A1 steht das Kalenderjahr als Zahl:

z.B. 2000

In Zelle A2 steht die Formel die über das Makro mit Rückgabewert Boolean aufgerufen wird:

=WENN(IstSchaltjahr(A1);"ja";"nein")

Ich will also an die Makro-Funktion "IstSchaltjahr" den WERT der Zelle A1 (im Beispiel also 2000) und NICHT den Text "A1" übergeben.

Die Frage ist, geht das überhaupt mit Parametern und wenn ja, wie?

Gruß Christian


Anzeige
Re: Funktionsaufruf mit Parameter in Excel-Formel
02.02.2003 09:11:34
Hans W. Hofmann

So dunkel seh ich vielleicht Dein Problem, ist aber mit meinem letzten Posting so weit beantwortet. Wenn Du als Übergabe Integer festlegst, dann bekommst Du latürnich einen Wert-Fehler, wenn Du Text vorlegst. Lass entweder Range oder Variant (wie in meiner Lösung) als Übergabe zu, dann sollte VBA sich um die Typenkonvertierung kümmern. War's das?

Gruß HW

Anzeige
Re: Funktionsaufruf mit Parameter in Excel-Formel
02.02.2003 18:05:46
Christian Wimmer

Leider nicht. Auch wenn ich Variant oder Range nehme funktioniert's nicht.

Fehlermeldung: Die Formel enthält Fehler ...

Tja, werde das Problem wohl oder Übel über ein KeyClick-Makro umgehen müssen. Schade.

Danke für Deine Bemühungen.

Christian

Re: Funktionsaufruf mit Parameter in Excel-Formel
02.02.2003 20:29:26
Hans W. Hofmann

Was macht meine Formel mit Deinen Werten?

Gruß HW

Anzeige
Re: Funktionsaufruf mit Parameter in Excel-Formel
03.02.2003 16:12:25
Christian Wimmer

Dieselbe Fehlermeldung wie bei mir. Wie gesagt, danke nochmal.

Christian

;
Anzeige

Infobox / Tutorial

Funktionsaufruf mit Parametern in Excel-Formeln


Schritt-für-Schritt-Anleitung

Hier siehst du eine einfache Schritt-für-Schritt-Anleitung, um eine benutzerdefinierte Funktion in Excel zu erstellen, die Parameter akzeptiert und in einer WENN-Bedingung verwendet werden kann.

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Wähle im Menü Einfügen die Option Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Function IstSchaltjahr(zahl As Integer) As Boolean
        Dim ok As Boolean
        If (zahl Mod 4 = 0 And zahl Mod 100 <> 0) Or (zahl Mod 400 = 0) Then
            ok = True
        Else
            ok = False
        End If
        IstSchaltjahr = ok
    End Function
  4. Speichere das Modul und schließe den VBA-Editor.

  5. Gehe zurück zu deinem Arbeitsblatt und schreibe die Formel in eine Zelle, z.B.:

    =WENN(IstSchaltjahr(A1);"ja";"nein")
  6. Achte darauf, dass in Zelle A1 ein Jahr als Zahl steht.


Häufige Fehler und Lösungen

Ein häufiges Problem bei der Verwendung von benutzerdefinierten Funktionen in Excel ist die Fehlermeldung #WERT!. Hier sind einige Lösungen:

  • Fehlermeldung #WERT!: Stelle sicher, dass die Zelle, die du als Parameter übergibst, tatsächlich eine Zahl enthält und kein Text. Wenn du die Funktion mit einem Textwert aufrufst, wird ein Typfehler auftreten.
  • Parameterübergabe: Wenn du möchtest, dass die Funktion den Wert einer Zelle erhält, stelle sicher, dass du die Zelle selbst (z.B. A1) und nicht den Zellbezug als Text (z.B. "A1") übergibst.

Alternative Methoden

Wenn die benutzerdefinierte Funktion nicht funktioniert oder du eine andere Methode ausprobieren möchtest, kannst du auch die WENN-Funktion mit einer eingebauten Formel kombinieren. Zum Beispiel:

=WENN(UND(A1 MOD 4 = 0; ODER(A1 MOD 100 <> 0; A1 MOD 400 = 0)); "ja"; "nein")

Diese Formel überprüft direkt, ob das Jahr in Zelle A1 ein Schaltjahr ist, ohne eine benutzerdefinierte Funktion zu verwenden.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Funktion IstSchaltjahr in verschiedenen Szenarien verwenden kannst:

  1. Einzelne Zelle:

    =WENN(IstSchaltjahr(2024);"ja";"nein")

    Dies gibt "ja" zurück, da 2024 ein Schaltjahr ist.

  2. Werte aus einer Liste: Angenommen, du hast eine Liste von Jahren in den Zellen A1 bis A5, dann kannst du in B1 die Formel verwenden:

    =WENN(IstSchaltjahr(A1);"ja";"nein")

    Ziehe die Formel nach unten, um die nächsten Zellen zu füllen.


Tipps für Profis

  • Verwendung von Variant: Wenn du die Übergabe von Parametern flexibler gestalten möchtest, kannst du Variant verwenden, um sowohl Zahlen als auch Text zuzulassen.

    Function IstSchaltjahr(zahl As Variant) As Boolean
        If IsNumeric(zahl) Then
            Dim year As Integer
            year = CInt(zahl)
            ' Hier die Schaltjahr-Logik...
        Else
            IstSchaltjahr = False
        End If
    End Function
  • Fehlerbehandlung: In VBA ist es hilfreich, Fehlerbehandlungsroutinen einzufügen, um unerwartete Eingaben zu handhaben.


FAQ: Häufige Fragen

1. Warum funktioniert meine benutzerdefinierte Funktion nicht?
Vergewissere dich, dass du die Funktion korrekt im VBA-Editor gespeichert hast und dass die Eingabewerte (z.B. Zellbezüge) richtig sind.

2. Kann ich die Funktion auch in Excel Online verwenden?
Leider unterstützen Excel Online keine benutzerdefinierten VBA-Funktionen. In diesem Fall musst du auf die Standardfunktionen zurückgreifen.

3. Wie kann ich sicherstellen, dass meine Funktion mit Textwerten umgeht?
Verwende den Datentyp Variant für deine Parameter, um Text und Zahlen zu akzeptieren und konvertiere sie bei Bedarf in den richtigen Typ.

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