Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
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

VBA IF Makro1= wahr Then Call Makro

VBA IF Makro1= wahr Then Call Makro
23.01.2019 17:13:55
Max
Hallo zusammen,
ich bin aufgrund einer Anforderung nun zu VBA gekommen und konnte meine ersten Probleme innerhalb kürzester Zeit lösen, jedoch bleibt eine Angelegenheit immer wieder offen und ich finde weder in deutschen noch englischen Foren eine konkrete Lösung.
Situation wie folgt:
Die Tabelle beginnt in Spalte C. Makro1 verweist auf die per Dropdown ausgewählte Exceltabelle (Argument1).
Makro2 prüft ein Argument2 der Exceltabelle und soll wenn das Ergebnis aus Makro3 einem in einer Zelle gewähltem Wert (Zelle E1) entspricht, Makro 3 ausführen. Andernfalls soll leer angezeigt werden, oder ggf. erst wieder der nächste, nicht leere Wert angezeigt werden.
Der aktuelle Stand sieht so aus:
Makro1 funktioniert problemlos.
Makro2 erkennt Makro3 nicht an.
Makro 3 funktioniert problemlos.
Option Explicit
---------------------------------------

Sub Macro3 ()
'Kommentar'
With ThisWorkbook.Worksheets("Datenbasis").Activate
Range ("C6").Formula = Range("G3").value
End With
End Sub

--------------------------------------

Sub Makro2 ()
'Kommentar'
If Makro3 = Range("E1").value Then
Call Makro3
Else MsgBox ""
End If
End With
End Sub

Ich würde mich sehr freuen, wenn jemand eine Idee hat, wie eine IF Macro = true Then Macro Funktion aussehen kann. Mein Syntax-Wissen für VBA reicht an dieser Stelle leider nicht aus.
VG Max

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 17:19:36
onur
Beschreib mal besser, was du mit den 3 Makros erreichen willst.
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 17:46:56
Max
Makro 1 soll die richtige Exceldatei vom Rechner zuordnen, damit die Oberkategorien aktuell bleiben.
Makro 2 soll entscheiden, ob die Subkategorie in einer Datenreihe der vorab definierte Subkategorie entspricht ( in welchem Fall Makro 3 agieren soll) oder nicht ( in welchem Fall "" zurückgegeben werden soll)
Makro 3 soll die Datenreihen aus der Bezugsdatei (oben als Exceldatei bezeichnet) darstellen
Bsp.
Oberkategorien in den Spalten: Name; Kategorie; Artikelnr.; Preis
Kategorie in Spalte 2: Kleidung; Spielzeug; Haushaltswaren
Zeilen sind mit Datensätzen der einzelnen Produkte gefüllt
E1 definiert die (Produkt-)Kategorie.
Aufgabe an Makro2: Zeige mir nur Werte an, bei denen die Kategorie Spielzeug entspricht.
Ich hoffe das verdeutlicht mein Ziel.
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 18:42:50
onur
"Makro 3 funktioniert problemlos." ?
Wie kommst du darauf?
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 18:46:51
Max
Makro3 hat keinerlei Bedingungen und soll lediglich den Wert aus einer anderen Exceltabelle darstellen. das Makro3 funktioniert alleine ausgeführt und zeigt die Daten an, wie erwünscht.
Problematisch ist weiterhin nur die Verbindung mit der IF Funktion in Makro2.
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 18:49:15
onur
Und wie wird die Date geöffnet?
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 22:05:13
Max
Welche Datei?
Nach Anfrage von Piet habe ich die Datei als Beispiel Datensatz konfiguriert. Anbei die Antwort meinerseits:
"Hallo Piet,
es hat etwas gedauert, aber habe ich endlich die Arbeit hinter mir gelassen und eine Beispieldatei gebastelt. Sie bildet mit der Ausnahme, dass alle Arbeitsmappen in einer Excel sind, die Situation wie besprochen ab. Das mit der Fehlermeldung konnte ich klären, das Ergebnis stimmt aber leider trotzdem nicht, da ich bei IF oder ELSE offensichtlich einen Fehler habe.
Du findest sie hier https://www.herber.de/bbs/user/127046.xlsm
Ich bin für jede Unterstützung dankbar. VG Max"
Vielleicht kannst Du mich so besser verstehen. VG Max
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 22:11:20
onur
"dass alle Arbeitsmappen in einer Excel sind" ? Verwechselt du was?
Eine Arbeitsmappe ist eine Datei und eine Tabelle ist ein Worksheet.
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 22:42:20
Max
Nein. Im Originalproblem habe ich 2 Arbeitsmappen (2 Exceldateien in unterschiedlichen Laufwerken), weswegen Standardlösungen nicht funktionierenund ich zu VBA gekommen bin.
VG Max
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 22:52:11
onur
Und in welcher Datei sind die einzelen Makros und wie werden sie aufgerufen?
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 22:28:56
onur
"Makro 3 soll die Datenreihen aus der Bezugsdatei (oben als Exceldatei bezeichnet) darstellen!"-DIESE DATEI .
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 22:53:18
Max
Bezugsdatei ist im Beispiel das Worksheet Daten1218, das sich in Realität in einem anderen Dokument,auf einem anderen laufwerk befindet.
Die Datei soll nicht geöffnet werden, da sonst auch evtl. über indirekt() möglich gewesen wäre. Die Makros Makro1 und Makro3 können ohne Öffnen der Datei auf die Inhalte der jeweiligen Zellen zugreifen.
Hilfe brauche ich daher bei Makro2, um nur die gewünschten Datenreihen der jeweils ausgewählten Kategorie anzeigen zu lassen.
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 22:57:10
onur
"Die Makros Makro1 und Makro3 können ohne Öffnen der Datei auf die Inhalte der jeweiligen Zellen zugreifen" - WIE KOMMST DU EIGENTLICH AUF DIE SCHNAPSIDEE?
Das einzige, was die machen könnten, wäre aud das BLATT "Daten1218" zugreifen.
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 23:13:19
Max
Ich verstehe die Aufregung nicht.
Abgesehen davon ist dieser Part überhaupt nicht Teil meines Problems.
Ich suche hier kein Urteil, sondern konstruktive Verbesserungsvorschläge. Damit kann ich mir dann selber ein Urteil über meine Herangehensweise bilden.
VG Max
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 23:26:11
onur
Du hast in Wahrheit NULL Ahnung, was dein "Code" macht, wahrscheinlich weil er nicht von dir stammt, sondern wahrscheinlich von jemandem, der noch weniger Ahnung hat, und behauptest, Makro 1 und 3 laufen problemlos, weil du nicht mal in der Lage bist, zu überprüfen, ob das der Fall ist.
Du bist nicht in der Lage, zu erklären, wie und wann die Makros aktiviert werden und nicht einmal zu beschreiben, was sie überhaupt machen sollen oder was genau dein Ziel ist.
Wahrscheinlich wäre alles mit EINEM Makro und ein paar Zeilen Code (aber bestimmt nicht, ohne die andere Datei zu öffnen) zu lösen, wenn man nur wüsste, was überhaupt dein Ziel ist.
Dann bist du auch noch beleidigt und gibst pampige arrogante Antworten auf Fragen.
Da ich keine Lust habe auf so eine Kinderkacke und dir alles aus der Nase zu ziehen, bin ich raus.
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
24.01.2019 11:58:07
Max
Wenn ich 1:1 die Ergebnisse sehe, die in der Tabelle stehen, die über die Verlinkung mittels Dateilauswahl angegeben ist, meine ich, dass es funktioniert. Ich habe keinen Anhaltspunkt dafür, dass das Gegenteil der Fall sein sollte.
Sicherlich gibt es eine einzige Lösung in 30 Zeilen Code, allerdings bin ich gerade erst in das Thema eingestiegen und bevorzuge eine Schritt-für-Schritt-Lösung.
Trotzdem danke ich Dir für Deine erheiternden Kommentare und ein so herzliches Willkommen im Forum.
VG Max
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 19:33:26
onur
Wenn du nicht mal Fragen beantwortest - Dann such mal weiter.
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 22:08:02
Max
Leider bin auch ich nur ein Mensch und verlasse die Arbeit, pendle zurück in mein Apartment und mache mir etwas zum Essen. Das soll auch noch vorkommen ;)
VG Max
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 19:24:32
Max
Makro3 hat keinerlei Bedingungen und soll lediglich den Wert aus einer anderen Exceltabelle darstellen. das Makro3 funktioniert alleine ausgeführt und zeigt die Daten an, wie erwünscht.
Problematisch ist weiterhin nur die Verbindung mit der IF Funktion in Makro2.
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 17:23:35
Piet
Hallo Max
Warum bitte so kompliziert denken mit IF Makro3 = True? - Da kann ich dir nicht helfen!!!
Was in Zelle "Datenbasis" Range(E1) drin steht, oder zur Entscheidung drin stehen soll weist nur du!
mfg Piet
Erfahrene alte Praktiker programmieren das anders, einfach so:
If ThisWorkbook.Worksheets("Datenbasis").Range("E1").Value = "such dir was aus!!" then
Call Makro3
end if
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 17:56:55
Max
In diesem Zusammenhang fehlt mir leider die Abhängigkeit von E1, da hierbei nur ein Wert X von E1 abhängig wäre. Wenn bspw. E1 die Kategorie definiert und ich nun die Kategorie Spielzeuge auswähle, ruft das Makro3 nun trotzdem alle Daten auf.
E1 Definition Spielzeug = "such dir was aus" call Makro3 erfordert dann immer noch die Definition der Abhängigkeit von "such dir was aus" von den durch Makro3 dargestellten Werten.
In der weiteren Antwort habe ich die Situation noch einmal besser dargestellt.
Wenn es nicht so kompliziert wäre, hätte ich sicherlich eine Lösung gefunden...
Evtl. gibt es noch Alternativen, allerdings ist 1 hr VBA noch etwas zu wenig, um einen Workaround zu kennen. Trotzdem danke für den Versuch.
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 18:02:14
Piet
Hallo Max
du hast onur eine schöne Erklaerung abgegeben was du erreichen willst. Ich erinnere an deinen Code:
If Makro3 = Range("E1").value Then - Was bitte steht den in dieser Zelle genau drin?
Der Text "Makro3" ganz sicher nicht. Wenn aber durch IF etwas Entschieden werden soll, was muss da konkret stehen?
Das kann ja auch "" = nıx sein!! - Hast du meinen Vorschlag mal getestet? - Bei nix setzte auch bitte ein "" ein!
mfg Piet
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 18:18:58
Max
Hallo Piet,
ich habe es mal versucht und theoretisch ist es mittels einer kleinen Anpassung möglich, da ich das makro3 vorablaufen lasse und mich auf die Ergebniszelle beziehen könnte. Das sieht bei mir dann so aus:
--------------------
Makro3 wie bisher gehabt
--------------------
Sub Makro2()
'Verweis in die ausgewählte Kategorie'
With ThisWorkbook.Worksheets("Datenbasis").Activate
If ThisWorkbook.Worksheets("Datenbasis").Range("E1").Value = Range("C6").Value Then
Call Makro3
Else: MsgBox ""
End If
End With
End Sub

------------------
IF entscheidet ob die durch Makro3 in C6 ausgegebene Kategorie der Definition in E1 entspricht, wodurch dann C6 bzw. im Gegenereignis "leer" angezeigt werden soll.
Die Fehlermeldung über das Makro hat sich mit der Adaption Deiner Idee erledigt, allerdings zeigt mir Excel nun einen Fehler in der Ausführung an - interessanterweise ganz ohne Fehlermeldung: nur ein weißes Kästchen mit "OK".
Ich befürchte die Abfolge der 2 Makros bereitet Probleme, bin mir jedoch nicht über die genaue Ursache im Klaren.
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 18:09:56
Piet
Hallo Max
ich habe gerade diene Antwort gelesen, 1 Std VBA ist wirklich zu wenig um alles zu verstehen!
Wenn wir auf die Zelle E1 nicht zugreifen können um eine Entscheidung zu treffen, worauf müssen oder können wir dann zugreifen? - Wir sehen deine Datei ja nicht. Eine kleine Beispieldatei waere hier nützlich, damit wir uns die ganze Aufgabe ansehen können. Wir könnten ja auch Daten aus einer UserForm zur Entscheidung nehmen. Ohne die Datei zu sehen ist das eher ein "heiteres Ratespiel"!
mfg Piet
AW: offen stellen vergessen oWt
23.01.2019 18:11:08
Piet
AW: offen stellen vergessen oWt
23.01.2019 18:21:20
Max
Hallo Piet,
am Firmenrechner sind leider alle Down- und Uploads ausgeschlossen, aber ich kann gerne später noch eine Datei beifügen.
VG Max
Anzeige
AW: VBA IF Makro1= wahr Then Call Makro
23.01.2019 22:02:25
Max
Hallo Piet,
es hat etwas gedauert, aber habe ich endlich die Arbeit hinter mir gelassen und eine Beispieldatei gebastelt. Sie bildet mit der Ausnahme, dass alle Arbeitsmappen in einer Excel sind, die Situation wie besprochen ab. Das mit der Fehlermeldung konnte ich klären, das Ergebnis stimmt aber leider trotzdem nicht, da ich bei IF oder ELSE offensichtlich einen Fehler habe.
Du findest sie hier https://www.herber.de/bbs/user/127046.xlsm
Ich bin für jede Unterstützung dankbar. VG Max
AW: VBA IF Makro1= wahr Then Call Makro
24.01.2019 00:58:05
Piet
Hallo Max
ich habe mir gerade dein Beispieldatei angesehen. Erster Eindruck:
Da sind aber noch einige VBA Grundkenntnisse über Programmieren und die Funktion von With erforderlich.
Für hete ist es mir u spaet, gave schon zuviel programiert um da noch klar denken zu können. (s. Tippfehler!)
Habe hier 2:57 (nicht deutsche Zeit) gehe ins Bett, muss mal schlafen. Melde mich wieder.
mfg Piet
AW: VBA IF Makro1= wahr Then Call Makro
24.01.2019 11:48:13
Max
Das ist gut nachvollziehbar.
Ich habe mich bisher noch nicht mit VBA beschäftigt und Kenntnisse aus anderen Programmen helfen mir leider nicht sehr viel weiter, außer, dass ich im Optimalfall weiß, was ich überhaupt suche^^
Bis bald. VG Max
AW: VBA IF Makro1= wahr Then Call Makro
24.01.2019 00:58:07
Piet
Hallo Max
ich habe mir gerade dein Beispieldatei angesehen. Erster Eindruck:
Da sind aber noch einige VBA Grundkenntnisse über Programmieren und die Funktion von With erforderlich.
Für hete ist es mir u spaet, gave schon zuviel programiert um da noch klar denken zu können. (s. Tippfehler!)
Habe hier 2:57 (nicht deutsche Zeit) gehe ins Bett, muss mal schlafen. Melde mich wieder.
mfg Piet
AW: VBA IF Makro1= wahr Then Call Makro
24.01.2019 16:35:53
Piet
Hallo Max
ich habe eine Weile gebraucht um mich durch den ganzen Thread durchzulesen, (gehe darauf bitte Nicht ein)
Schwieriger war es deine Makros zu verstehen, denn die widersprechen jeder Excel und Programmier Logik.
kleiner VBA Grundkurs: - With Klammer!!
With bedeutet im Klartext das nachgestellte Befehle sich NUR auf diesen Ausdruck beziehen, Wenn sie durch einen vorgestellten Punkt markiert werden. Es ist ein entscheidender Unterschied ob im Makro steht:- .Range("E1").Value oder Range("E1").Value - ohne Punkt!
Dieser dumme kleine Punkt wied gerne übersehen, wie reagiert Excel darauf? Beim Punkt bezieht sich der Bereich auf ThisWorkbook und die dahinter stehende Tabelle! Beim normalen Range holt Excel sich den Wert aus dem gareade aktiven Sheet. Und ist eine zweite Datei geöffnet auch immer aus der gerade aktiven Datei!! Damit stimmt die Auswertung dann absolut nicht mehr!!!
With mit Activate am Ende, kannst du gleich auf With verzichten, weil dieses Blatt ohnehin aktiviert wird! Klappt mit "ThisWorkbook" aber auch nicht wenn eine andere Datei geöffnet und aktiv ist!! Das sind VBA Grundkenntnisse die man erst im Laufe der Zeit erlernt!
Mit Makro1 setzt du in Zelle C6 immer wieder eine Formel ein, überschreibst aber die vorherige!
Ob das richtig ist musst du wissen? Dasselbe gitl für Makros3, kannst du auch wie unten schreiben!
Makro2 habe ich dir mal umgeschrieben, damit die Auswertung stimmt. Wofür du result brauchst weiss ich nicht?
Bei Else kannst du statt result =0 auch eine MsgBox reinsetzen: MsgBox "Kategorie nicht gefunden"
End-Befehle die zm Schluss stehen wie: - Activate, Selsct, Copy, Paste - gehören NIE ans Ende eines With Ausdruck!!
Ich hoffe meine Ausführungen helfen dir weiter VBA und With jetzt besser zu verstehen, mehr kann ich nicht tun!
mfg Piet
Sub Makro3()
'Verweis auf die unter B1 ausgewählte Daten-Datei'
Worksheets("VBA").Activate
Range("C7").Formula = Range("H3").Value
End Sub
Sub Makro2()
'Test auf die in E1 ausgewählte Kategorie'
Dim result As String
With ThisWorkbook.Worksheets("VBA")
If .Range("E1").Value = .Range("C7").Value Then
Call Makro3
Else: result = 0
End If
End With
End Sub

AW: VBA IF Makro1= wahr Then Call Makro
25.01.2019 09:45:08
Max
Danke für die ganzen Tipps, ich werde mich anhand dessen durchprobieren.
Mit result hatte ich mir nur erhofft eine Ausgabe von 0 oder "" in dem jeweiligen Feld festlegen zu können, da die Msg. Box mir im ersten Ansatz dann auch nur eine leere Msg.Box angezeigt hat - mit den Werten der Tabelle konnte ich dadurch nicht arbeiten.
Das Grundverständnis hilft mir sicherlich am besten weiter, um die Hintergründe besser verstehen zu können.
Nochmals vielen Dank.
VG Max

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige