Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1344to1348
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro starten über Formel

Makro starten über Formel
02.02.2014 12:53:15
Martin
Hallo Excelspezis,
ich hab mal wieder ein Problem, wo ich momentan auf dem Schlauch steh.
Ich möchte ein Makro über eine "Wenn" Funktion mit Vergleich starten, da ich min 1000 Einträge in Spalte G und H so nach und nach durchführen will, läßt sich die Formel wunderbar runter ziehen. H wird vorgegeben vom Dropdown, das klappt soweit ganz gut.
Doch komischer Weise, startet das Makro, was ausgelöst wird durch den Zellwertvergleich, auch wenn ich z.B. Spalte D filtere, es sei denn die Einträge bei G und H sind alle gleich. Hab schon versucht über Makro bei Zellwertänderung, doch leider bekomm ich es nicht hin, das ich bis z.B. H1000 vergleichen kann.
Gibt es vielleicht noch andere Lösungen?
Hier mal die Datei:

Die Datei https://www.herber.de/bbs/user/89067.xlsm wurde aus Datenschutzgründen gelöscht

Danke
Gruß
Martin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro starten über Formel
02.02.2014 12:57:39
Hajo_Zi
Hallo Martin,
ich halte mich jetzt mal an den Betreff.

Über wenn Makro starten
Du musst dazu einen Umweg anlegen.
Die WENN-Funktion lautet z.B.
=WENN(A1>10;MakroStart();"Nix")
Die Wenn-Bedingung kann kein Makro starten, aber eine Funktion ausführen. Diese Funktion kann  _
wiederum ein Makro aufrufen.
Die Funktion ist so aufgebaut und ruft das abhängige Makro auf:
Function MakroStart()
Application.Volatile
MakroStart_Makro
End Function
Sub MakroStart_Makro()
MsgBox ("TuT")
End Sub
von Ramses (Rainer)
oder
Function MAKRO(strMakro As String) As String
Select Case (strMakro)
Case Is = "XY"
XY
Case Is = "Test2"
Test2
Case Else
strMakro = "kein Makro vorhanden"
End Select
MAKRO = strMakro
End Function
Sub XY()
MsgBox "hier kommt Makro XY"
End Sub
Sub Test2()
MsgBox "hier kommt Makro Test2"
End Sub
In einer Zelle:
=MAKRO(WENN(A1=0;"XY";A1))
von Melanie Breden


Anzeige
Ergänzend
02.02.2014 13:23:50
Jack_D
Würde es noch über nen Makro mit Change befehl (und einem bestimmten Wert)
Der könnte dann Makro starten sein ...
Grüße

AW: Ergänzend
02.02.2014 14:43:57
Martin
Vielen Dank,
das funktioniert schon, aber wie kann ich umgehen, dass wenn ich den Filter anwende,das Makro nochmal startet. Das tut es so oft, wie G und H unterschiedliche Werte aufweisen.
Gruß
Martin

AW: Ergänzend
02.02.2014 14:49:18
Jack_D
Bin mir da nicht sicher ob das klappt aber kannst du nicht mit Applications.time eine Unterbrechung einfügen.
Das macht allerdings nur begrenzt Sinn.
Und zwar dann wenn du was aufgerechnest dann noch ne Minute an den Filtern "spielst" und dann gut.
Sonst fällt mir nix passendes dazu ein

Anzeige
Alles bissken dürftig, ...
02.02.2014 14:56:49
Luc:-?
…meine Herren,
denn zuerst sollte mal geklärt wdn, was Martin wirklich will!
Denn das von Hajo gezeigte Bsp fktioniert schon fast nur damit, Martin,
und ich nehme ja nun nicht an, dass du nur eine MsgBox ausgeben willst!
Was Jack schreibt, geht da schon eher in die richtige Richtung (RECHERCHE-Stichwort physische Entkopplung), aber das hängt natürlich davon ab, was du tun willst; uU wäre es ja einfacher, gleich eine Funktions- (UDF, benutzerdefinierte Fkt) statt einer SubProzedur zu schreiben.
Außerdem gibt's bei deiner xlVersion ggf auch noch eine andere Möglichkeit (RECHERCHE-Stichwort selbstkorrigierende EingabeZelle)…
Gruß Luc :-?

Anzeige
AW: Alles bissken dürftig, ...
02.02.2014 15:35:37
Matze
Hallo Zusammen,
ich weis das ich in Sachen VBA noch viel lernen und üben muss, aber ich denke doch einfachheitshalber über das Change Ereignis ist dies doch recht simple zu lösen.
Option Explicit
'Mehrfacheingabe geht so nicht
Private Sub Worksheet_Change(ByVal Target As Range)
With Target.Cells(1)
If .Column = 7 Then 'SpalteG
If Target.Cells  .Offset(0, 1).Value Then
MsgBox "Makro startet" 'call DEINMAKRO
Else
MsgBox "Gleicher Wert ist erfüllt" 'MACH WAS ANDERES
End If
End If
End With
End Sub
Da du aber schon ein weiteren Bereich ebenfalls mit dem Change Ereignis bestückt hast müsste dies nun zusammen gefügt werden. Vergib dazu den "Bereichen" je eine Variable als Range und prüfe welcher Bereich gerade geändert wurde.
Ich hoffe es funktioniert so, ansonsten muss einer der Profis über meine Zeilen schauen
https://www.herber.de/bbs/user/89071.xlsm
Gruß Matze

Anzeige
werde ich hier überlesen? owT
02.02.2014 17:48:58
Matze

AW: werde ich hier überlesen? owT
03.02.2014 08:06:20
Martin
Vielen vielen Dank,
das funktioniert super.
Gruß Martin

AW: Alles bissken dürftig, ...
02.02.2014 15:57:24
Martin
Naja, die Msgbox war nur zum Testen.
Ursprünglich ist es so gedacht, dass ich D über Dropdown die Motoren heraus suche, dann ist meine Drehzahl schon über Sverweis in H.
Jetzt wollte ich eigentlich nur, das der Wert der Nachbarzelle mit Istwert, den ich eintrage verglichen wird. Sollte es zu einer Abweichung kommen, so öffnet sich ein externes Protokoll.
Momentan versuche ich über Vergleich mit der Nachbarzelle es hin zu bekommen, aber ich hatte noch keine Erfolg.
So wie es jetzt ist und ich hätte 100 Tests eingetragen, würden beim Filtern 100 Protokolle aufgehen.
Gruß Martin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige