Ich habe eine Mappe mit verschiedenen Blättern und möchte die Makros jeweils im aktiven Tabellenbaltt ausführen. z. B. eine Infobox anzeigen.
Habe dafür Worksheet-calculate gewählt. Da zeigt es mir die Infobox aber in jedem Tabellenblatt an, indem ich gerade eine Eingabe gemacht habe, obwohl es sich gar nicht auf dieses Tabellenbaltt bezieht.
Wie kann ich also ein Makro deklarieren, für „Nur für dieses“ Tabellenblatt?
Hallo Euphresia,
ist Dein Problem noch akut oder schon gelöst?
Was hast Du denn genau vor? Wann soll welches Makro wie laufen?
Viele Grüße
Manfred
Ich habe mehrere Blätter, die durch Formeln miteinander verknüpft sind. Es gibt ein Eingabeblatt und dann Auswertungsblätter. Mit worksheet_activate habe ich msgBoxen entworfen, die beim Eintreten einer Bedingung angezeigt werden. Das Blöde ist nur, wenn ich activate nehme und mich im Blatt befinde, wird der Hinweis nicht angezeigt. Erst, wenn ich das Blatt verlasse und dann neu „aktiviere“. Deshalb habe ich mich für worksheet_calculate entschieden. Hier ist aber der Nachteil, dass dann der Hinweis auch dann erscheint, wenn ich mich in einem anderen Tabelleblatt befinde, und dort irgendwas mache. Was nicht unbedingt falsch ist… aber lästig. Da ich mit VBA ein ziemlicher „Anfänger“ bin, kann ich nur vermuten, dass calculate sich auf die ganze Mappe bezieht und acticate eher auf das aktive Tabellenblatt… Ich hätte es aber lieber, dass sich calculate NUR auf das aktive Tabellenblatt bezieht.
Ich hoffe, ich habe mich verständlich ausgedrückt.
Viele Grüße
Hallo Euphresia,
so ungefähr verstehe ich, was Du willst. Aber wieder ein paar Fragen:
Warum eine Messagebox? Ich weiß nicht, wie groß Deine Tabellen sind, aber das Eintreten von bestimmten Bedingungen lässt sich auch durch bedingte Formatierungen von Zellen bewerkstelligen; so etwas habe ich bei mir: Wenn „es passt“, ist eine Zelle (oder ein Bereich) grün, wenn nicht, ist er rot. Dadurch kann ich weiter arbeiten und muss nicht Meldungen wegklicken. Nur als Idee - Messagebox kann durchaus auch sinnig sein…
Wie sieht denn Dein Makro aus? Wenn Du willst (und keine kritischen Daten drin hast - ich verkaufe sie auch nicht ), kannst Du mir mal Deine Datei zukommen lassen. Was für ein Excel hast Du denn (2003, 2007, 2010)?
Dann müsstest Du mir nur noch grob beschreiben, welche Meldung wann wo erscheinen soll.
Du könntest es aber auch direkt erst einmal so versuchen, dass Du das im Calculate belässt. Aber Vorsicht: Das Makro sollte nicht zu lange dauern, denn ein Calculate wird, wie Du schon gesehen hast, sehr oft aufgerufen. Und bevor Du die Messagebox anzeigst, kannst Du mit
If ActiveSheet.Name = „Tabelle1“ Then
MsgBox"Hi!"
End If
überprüfen, ob auch die aktuelle Tabelle aktiv ist. Das wäre vermutlich Deine Lösung.
Falls Du doch was schicken willst, hier die E-Mail-Adresse (bei w-w-w gehen Anhänge ja nicht, glaube ich) wegen Anhang: [email protected]
Viele Grüße
Manfred