Excel makro mit wenn funktion starten

Bernd Augustin

unread,

Nov 28, 2001, 4:58:11 PM11/28/01

to

Hallo NG

Gibt es eigentlich eine Möglichkeit ein Makro über eine Formel aufzurufen
wie z.B.
=WENN(F4="richtig";run Makro();"kein Makro")
In der Hilfe habe ich nichts dazu gefunden.

MfG
Bernd Augustin

Helma Spona

unread,

Nov 29, 2001, 6:13:03 AM11/29/01

to

Hallo Bernd
"Bernd Augustin" <> schrieb im Newsbeitrag
news:#cBxdZFeBHA.1740@tkmsftngp03...

Es kommt drauf an, was es für eine "Makro" ist. Eine VBA-Funktion die in
einem normalen Moduls gespeichert ist kannst Du aufrufen, bspw. wie jede
Excel-Funktion:
=WENN(F4="richtig";MEINEFUNKTION();"")

Prozeduren kannst Du meines Wissens so nicht aufrufen und auch die
FUnktionen müssen bestimmte Voraussetzungen erfüllen. Sie dürfen bspw. nicht
die aktive Zelle wechseln, keine Markierungen vornehmen, keine Arbeitsmappen
öffnen etc.

Alle VBA-Funktionen, die du direkt als Formel in die Zelle einfügen kannst,
mit =MEINEFUNKTION() und die dann nicht #Fehler oder #Wert liefern, können
auch in der WENN-Funktion aufgerufen werden.

mfg Helma Spona

--
Mfg Helma Spona
http://www.helma-spona.de
http://www.browser-bugs.de
http://www.edv-sk.de

Bernd Augustin

unread,

Nov 29, 2001, 2:46:27 PM11/29/01

to

Danke für die Hilfe.

Das mit dem Funktionsaufruf war mir schon bekannt.
Was ich gesucht hätte ist tatsächlich der Aufruf einer beliebigen Prozedur.
Schade, daß dies nicht geht. Damit könnte man viel anstellen.

Freundliche Grüße aus der Pfalz.

http://www.bernd-augustin.de
kostenlose AddIns für Excel

Martin Worm

unread,

Nov 29, 2001, 2:30:08 PM11/29/01

to

hallo Bernd,

möglicherweise hilft dir das Worksheet_change-Ereignis des
Tabellenblatts weiter:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$F$4" Then
If Target.Value = "richtig" Then
' Makro ausführen
End If
End If

End Sub

mfG
--
E-Mail von Martin Worm, Karlsruhe, Deutschland
Adresse:
benutze Excel2000(9.0.2812) Win ME
Antworten bitte nur in die Newsgroup

Wilfried Butzek

unread,

Nov 29, 2001, 6:18:08 PM11/29/01

to

Bernd Augustin schrieb am Thu, 29 Nov 2001 20:46:27 +0100:
>
> Danke für die Hilfe.
>
> Das mit dem Funktionsaufruf war mir schon bekannt.
> Was ich gesucht hätte ist tatsächlich der Aufruf einer beliebigen Prozedur.
> Schade, daß dies nicht geht. Damit könnte man viel anstellen.

Hallo Bernd,

ich weiss ja nicht, was Du da in der Formel so anstellen willst
;-))

Du koenntest aber eine beliebige Prozedur (nur mal so als
Anregung) aus einem Event aufrufen.

Beispiel:
Private Sub Worksheet_SelectionChange(ByVal Target As
Excel.Range)
Set Target = Range("F4")


If Target.Value = "richtig" Then

Modul1.Aufgerufenes
Else
Exit Sub
End If
Set Target = Nothing
End Sub

Sub Aufgerufenes()
MsgBox "Hallo"
End Sub

Mit freundlichem Gruss
Wilfried

f.risling

unread,

Nov 30, 2001, 12:39:27 PM11/30/01

to

Tach, wenn ich eine eigene Funktion starten kann, was hindert mich dann
daran aus der Funktion ne Sub aufzurufen?

Mfg, Franz

Function m()
Call a
End Function

Sub a()
MsgBox "Hi, ich bin eine Sub von einer Funktion gestartet"
End Sub

=WENN(A1=1;m();"Keine Sub aufgerufen")

news:9u63cd$lqk$03$...

Bernd Augustin

unread,

Nov 30, 2001, 2:28:33 PM11/30/01

to

Danke zusammen. So klappt es.
Angepaßt an meine Anwendung sieht es so aus.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set Target = ActiveCell.Offset(0, 1)


If Target.Value = "richtig" Then

Run "Auswahl"


Else
Exit Sub
End If
Set Target = Nothing
End Sub

Freundliche Grüße aus der Pfalz

  • #1

Ich hätte gerne Hilfe bei der Problemstellung aus einer Wenn-Formel ein Makro zu starten.
=Wenn(B1<>0;Makro1;"")
Bei diesem Aufruf erhält man unter Excel2011 eine Fehlermeldung.
Unter Windows soll es funktionieren.

  • #2

1) Schreibe bitte Mein_Makro() und nicht nur Mein_Makro
2) Eine "Formel" in Excel kann nur eine FUNKTION, nicht aber eine SUB aufrufen
3) Ansonsten bleibt nur die Lösung, dass Deine WENN Formel eine Makro Funktion auf ruft, welche wiederum eine Sub aufruft

  • #3

Die vollständige Funktion lautet:
Funktion Makro1()
Application.Volatile
MakroStart_Makro
End Funktion
Sub Makro1()
Range("B105").Select
Range("B105").GoalSeek Goal:=0, ChangingCell:=Range("B79")
End Subl

  • #4

Da ist so ziemlich alles falsch, was falsch sein kann

Excel makro mit wenn funktion starten

Du solltest Dich vielleicht mal in VBA Grundlagen einlesen
Excel makro mit wenn funktion starten
.....

  • #6

Was erwartest Du?
Kostenlosen Support?

Klar ist das ein Forum - natürlich hilft man - aber VBA ist eben nicht in 2 Minuten erklärt - VBA Kurse gehen bei mir 3-5 Tage, dann können die Leute annähernd richtig VBA programmieren. Dein Problem ist eben nicht in 2 Minuten erklärt. Also musst Du Dich selber in VBA kundig machen und einlesen und nicht nur einfach Code abschreiben ohne zu wissen wie es geht - denn dann geht es eben nicht... und Du erwartest nun, dass ich den Part des Dozenten / Programmierer für Dich übernehme?

Klar kann man das von Dir verlinkte Beispiel nehmen. Aber dummerweise klappt es nicht so - das Makro muss man natürlich anpassen an die eigenen Bedürfnisse. Zudem fehlen einige "Befehle und Deklarationen" in dem Beispiel. Wäre auch die Frage - brauchst Du Application.Volatile ... bzw. weißt Du was das macht?

Das ist ein bisschen so wie - da hat einer ein Beispiel gemacht wie man ein Bad baut - und hat dies als grobe Funktionszeichnung erstellt - und mit Hilfe dieser Zeichnung baue ich nun 1:1 eine Küche nach.

Nix für ungut - aber 1:1 funktioniert das halt nicht so für das, was Du machen willst.
Vielleicht sagst Du erst mal, was Dein Makro machen soll, nachdem die Wenn Funktion dieses Makro startet...

  • #7

Mei mei mei...


Code:

Zelle B1
=WENN(A1>100;starter();"Nix")

---

Visual Basic Editor - in einem Modul

Code:

Public Function starter() As Boolean
   
    Call meldung

End Function


Code:

Public Sub meldung()

    MsgBox "Klasse geht"
   
End Sub


Man sollte vielleicht die Namen (siehe Dein Beispiel) auch richtig vergeben ^^... also die WENN startet die Function starter() welche mit Call dann die Sub meldung aufruft. Und nicht wie in dem Beispiel die Namen der Functions und Subs hin und her geworfen werden. Zudem Elemente verwendet, welche man gar nicht braucht. Statt der MsgBox kommt halt Dein Code rein.

So gehts übrigens, Wenn A1 größer 100 - poppt die MsgBox auf...

  • #8

Na, Danke erst einmal für die Unterweisung.
Angeblich soll die Wenn Formel unter Windows ein Makro auslösen können (also kein Knopf zu drücken oder eine Tastenkombination zu betätigen).
Ob das unter OSX geht, ist somit die erste und grundsätzliche Frage.
Wenn es geht, dann kann auch die Zielwertsuche "vollautomatisch" gestartet werden.
Zweck:
Wenn der Wert der Zielzelle ungleich Null ist, variere die variabele Zelle solange, bis in der Zielzelle wieder die Null steht.
Damit ist ein "vollautomatischer" BreakEven möglich, der z.B. den Maximalpreis unter sich ändernden Bedingungen stetig anzeigt.
Darum will ich keinen Schalter einbauen und mit dem Makro der Zielwertsuche verbinden, Der muss nämlich erst betätigt werden und das führt zu "halbautomatisch".
1. Frage: Geht das nur unter Windows oder auch mit Excel 2011?
2. Frage: Was muss in der Wenn Formel stehen, da "Makro1()" eine Fehlermeldung produziert und was muss im Code stehen, um die Funktion zu ermöglichen?
Auch Dein Beispiel
Public Function starter() As Boolean
Call meldung
End Function
Public Sub meldung()
MsgBox "Klasse geht"
End Sub
benötigt einen Auslöser.

  • #9

sonst produziert es:
#NAME?

  • #10

Ähm mein Beispiel funktioniert unter Windows und OS X Excel. Getestet. Ich habe es wie oben beschrieben gemacht, sonst hätte ich den Code nicht rein kopieren können.

Mein Beispiel braucht doch keinen verbundenen Knopf. Die Wenn Funktion prüft A1 und startet dann bei richtiger Bedingung das Makro. Da muss nix ausgelöst werden. Reicht wenn A1 sich ändert.

Und woher hast Du den Namen Malro1 ??!! Logisch dass Du #Name? bekommst, wenn die Function nicht existiert - also Makro1 ...

Das meinte ich. Es nutzt nichts wenn ich Dir ein Beispiel nenne. Wenn Du nicht verstehst - nutzt es nichts das nur zu kopieren. Du müsst sehen und verstehen.

Nochmals - mein o.g. Beispiel geht genau so wie Du es willst. Du schaffst es aber nicht es ein zu binden. Nix für ungut... bin raus hier...


Gesendet von meinem iPhone mit Apfeltalk