Excel - Mit wenn Formel Makro auslösen

Was mache ich falsch? Ich möchte je nachdem ob in D7 1, 2 oder 3 steht Makro "karriere", "mlt" oder "alle" starten.

Hier mal meine Wenn-Formel:
=WENN(D7=1;karriere();wenn(d7=2;mlt();alle()))


Und hier mein Modul mit drei Makros:

Modul1
Code:

Option Explicit

Sub karriere()
'
' karriere Makro
' Makro am 30.07.2009 von Freak aufgezeichnet
'
' Tastenkombination: Strg+k
'
Selection.AutoFilter Field:=1, Criteria1:="36"
End Sub
Sub milt()
'
' mlt Makro
' Makro am 30.07.2009 von Freak aufgezeichnet
'
' Tastenkombination: Strg+m
'
Selection.AutoFilter Field:=1, Criteria1:="35"
End Sub
Sub alle()
'
' alle Makro
' Makro am 30.07.2009 von Freak aufgezeichnet
'
' Tastenkombination: Strg+Umschalt+A
'
Selection.AutoFilter Field:=1
End Sub


Ich muss zugeben dass ich das noch nie gemacht habe, aber soweit ich mich belesen habe müsste es funzen. Beim Ergebnis der Wenn-Formel kommt aber immer Name nicht gefunden oder #Bezug! und anschließend gelang ich zurück in den Editor wo die Meldung kommt, fehler beim Kompilieren, außerhalb einer Prozedur ungültig. Hä? =(
 
Probiers mal hiermit, WENN() ist keine Excel Funktion.

Code:
=IF(D7=1;karriere();IF(d7=2;mlt();alle()))
 
Oder probiere es mal mit einer Funktion anstatt Sub. Also:

Code:
Function karriere()
'
' karriere Makro
' Makro am 30.07.2009 von Freak aufgezeichnet
'
' Tastenkombination: Strg+k
'
Selection.AutoFilter Field:=1, Criteria1:="36"
End Function
 
Danke für Eure Antworten.

Ich habe sub jeweils in function geändert, aber wenn ich die oben genannte Formel anwende (mit if) kommt

Name nicht gefunden. und er makiert mir das Wort "karriere" =(. hä?

Hab mal nen Screenshot von der ganzen Sache gemacht.
 
Süß, werden neuerdings auch Scripting- und Programmiersprachen lokalisiert?! :rolleyes:

Das ist schon ziemlich lange so. Zumindest bei Excel. ;)

@Topic:
Mit einer Funktion sollte das sehr wohl funktionieren. Dein Problem ist, dass die Funktion keine Rückgabe hat. So weis Excel nicht was es in die Zelle, in der die Wenn-Funktion steht schreiben soll. Falls der Rückgabewert unwichtig ist, kannst du zB einfach "" zurückgaben.

Code:
Function Funktion1()
    'tu was
    Funktion1 = "ergebnis"
End Function
 
Original von goflo
Code:
Function Funktion1()
    'tu was
    Funktion1 = "ergebnis"
End Function
Das sollte glaub ich eher:
Code:
Function Funktion1()
    'tu was
    return "ergebnis"
End Function
sein. Bei dem Orginal wird einfach eine Variable auf einen Wert gesetzt.

Den obigen Text einfach überlesen :)
@nonpretium
Du könntest auch einfach die Tabelle mit ausgedachten Daten füllen und dann posten.
--
Enterprize1
 
Oh ja stimmt, sorry. Hab das grade ausprobiert und hat nicht funktioniert. Ich sollte wohl nicht von einer Programmiersprache auf die andere schließen :D
--
Enterprize1
 
Oh ja stimmt, sorry. Hab das grade ausprobiert und hat nicht funktioniert. Ich sollte wohl nicht von einer Programmiersprache auf die andere schließen großes Grinsen

Ja, ist wohl besser so! Vor allem nicht wenn die beiden Sprachen nicht einmal die selben Wurzeln haben. ;)
 
Zurück
Oben