gibt es die Möglichkeit aus einer wenn-Formel heraus bei erfüllter Bedingung ein Makro zu starten; wie lautet der Aufruf ?
Vielen Dank im Vorraus für Eure Hilfe
Günther
gibt es die Möglichkeit aus einer wenn-Formel heraus bei erfüllter Bedingung ein Makro zu starten; wie lautet der Aufruf ?
Vielen Dank im Vorraus für Eure Hilfe
Günther
Ich würde mal wie folgt ansetzen:
If BlaBlaBla (Bedingung) Then
Call PiPaPo (Makroname)
End If
Wolfgang
aber ich suche nach einer Möglichkeit, das Makro aus der Formel einer Zelle zu starten, und nicht aus dem VBA-Code;
=wenn(A1<>"";call makro1) funktioniert nicht
gibt es da noch was?
Grüße
Günther
wenn du das makro nach einer bestimmten eingabe in einer bestimmten zelle starten willst musst den umweg über ein worksheet_change im Tabellenmodul gehen. Dort kannst du dann definieren, wann, bei welcher eingabe in welcher zelle, welches makro gestartet werden soll.....verständlich??
du kannst ja mal schildern, was wann passieren soll, dann kann man das worksheet_change genauer definieren....
michel
der Befehl worksheet_change sagt mir leider nichts;
aber passieren soll folgendes:
in einer Übersicht von Projekten sollen die Zellen einer Zeile farblich unterschiedlich hervorgehoben werden, in Abhängigkeit von Datums-Einträgen in Spalten wie Eingangsdatum, Auftragsdatum, erledigt, da mit der bedingten Formatierung nur eine Zelle bearbeitet werden kann.
Günther
es geht folgendermassen.
Allerdings können in einer Tabellenfunktion wie der Wenn-Funktion nur Funktionen (auch selbstgeschriebene) und keine Subs aufgerufen werden.
Ist aber kein Problem:
Schreibe den folgenden Code in ein normales Modul:
Function Makroaufruf()
MsgBox "Die Bedingung ist erfüllt!"
End Function
oder alternativ:
Function Makroaufruf()
MeinMakro
End Function
Sub MeinMakro()
MsgBox "Die Bedingung ist erfüllt!"
End Sub
zum Aufruf in eine beliebige Zelle:
=wenn(A1=10;Makroaufruf();"")
Gruss
Andreas
um daraus jetzt ein makro basteln zu können müsste ich die tabelle sehen, aber nach dem was du schreibst, kannst du das doch über die bedingte formatierung lösen....
die bedingung als Formel ist, entsprechende bedingungen formulieren und die Zellen damit formatieren....
wenn du nicht klarkommst..vorschlag: schick mir mal nen auszug aus deiner tabelle, dann wird das schon werden..
michel
Günther
Um ein Makro zu starten, wenn eine bestimmte Bedingung erfüllt ist, kannst Du den folgenden Ansatz verwenden. Beachte, dass der Aufruf eines Makros innerhalb einer Zelle nicht direkt möglich ist. Stattdessen musst Du den Worksheet_Change
-Ereignis verwenden. Hier sind die Schritte:
Öffne die Excel-Datei und drücke ALT + F11
, um den VBA-Editor zu öffnen.
Doppelklicke im Projektfenster auf das Tabellenblatt, in dem Du das Makro auslösen möchtest.
Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
If Target.Value <> "" Then
Call MeinMakro
End If
End If
End Sub
Sub MeinMakro()
MsgBox "Die Bedingung ist erfüllt!"
End Sub
Schließe den VBA-Editor und teste die Funktion, indem Du in Zelle A1 einen Wert eingibst.
Fehler: Makro wird nicht ausgeführt.
Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen
und aktiviere die Makros.Fehler: Die Zelle A1 wird nicht erkannt.
Intersect
-Befehls. Stelle sicher, dass Du die richtige Zellreferenz verwendest.Wenn Du ein Makro aus einer Formel in einer Zelle aufrufen möchtest, kannst Du eine benutzerdefinierte Funktion erstellen. Hier ist ein Beispiel:
Function Makroaufruf() As String
Makroaufruf = "Die Bedingung ist erfüllt!"
End Function
Du kannst diese Funktion dann in einer Zelle verwenden:
=WENN(A1=10;Makroaufruf();"")
Beachte, dass benutzerdefinierte Funktionen in Excel nicht direkt Makros ausführen können, aber Du kannst sie verwenden, um Ergebnisse zurückzugeben.
Angenommen, Du möchtest, dass bei der Eingabe eines Datums in Zelle B2 das Makro ausgeführt wird, um die Zeile farblich zu ändern:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B2")) Is Nothing Then
If IsDate(Target.Value) Then
Target.EntireRow.Interior.Color = RGB(255, 255, 0) ' Gelb
End If
End If
End Sub
In diesem Beispiel wird die gesamte Zeile, in der sich B2 befindet, gelb markiert, wenn Du ein Datum eingibst.
Application.EnableEvents = False
, um unerwünschte Schleifen im Code zu vermeiden, insbesondere wenn Du mehrere Zellen gleichzeitig änderst.1. Kann ich ein Makro aus einer Excel-Formel heraus aufrufen?
Leider kannst Du direkt in einer Zelle kein Makro aus einer Formel heraus starten. Stattdessen kannst Du die Worksheet_Change
-Ereignisse verwenden.
2. Wie kann ich mehrere Bedingungen für das Auslösen eines Makros definieren?
Du kannst mehrere If
-Bedingungen in deinem Worksheet_Change
-Ereignis kombinieren, um verschiedene Aktionen auszuführen, abhängig von den Eingaben in verschiedenen Zellen.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen