Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
896to900
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
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro überspringen

Makro überspringen
19.08.2007 15:21:21
Alex
Liebe Excelfreunde!
Ich wende mich mit folgender Frage an euch:
Durch ein Makro werden aus meiner bestehenden Arbeitsmappe mehrere Blätter kopiert, die dann per Mail versendet werden sollen. Das Problem liegt darin, dass sich in den zu kopierenden Blättern (unter Worksheet-Activate) Makros befinden, die Symbolleisten laden bzw. löschen. Das Mailmakro läuft, allerdings wird nach dem Kopiervorgang (da ja eines der Blätter aktiviert wird) das Makro in diesem Blatt gestartet und bleibt hängen.
Besteht die Möglichkeit, diesen Teil zu überspringen. Mit Error resume next bin ich nicht weitergekommen.
vielen lieben Dank schon mal für eure Ideen.
lg alex

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro überspringen
19.08.2007 15:49:00
Oberschlumpf
Hi Alex
Deklariere mit Public im allgemeinen Modul eine öffentliche Variable vom Typ Boolean.
Starte dein Kopier-Makro so:

Sub DeinKopierMakro()
variable = True
'ab hier dein Code zum Kopieren
End Sub


Schreib in jedes der ActiveSheet-Ereignisse das hier:


Private Sub Worksheet_Activate()
If variable = False Then
'hier dein ActivateCode
Else
variable = False
End If
End Sub


Hilft das?
Ciao
Thorsten

AW: Makro überspringen
19.08.2007 17:15:18
Alex
Hallo Thorsten!
Meine Kenntnisse sind nicht so umfangreich - erläutere mir bitte den Hinweis "mit Public"vom Typ Boolean!
lg alex

Anzeige
AW: Makro überspringen
19.08.2007 20:39:52
Oberschlumpf
Hi Alex
Public wird (auch) in der Excel-Hilfe erklärt.
Du kannst eine Variable so bestimmen (deklarieren), dass sie nur innerhalb der S ub bekannt ist, in der die Variable "entsteht".
Bsp

Sub Makro1()
Dim variable1
variable1 = "Text1"
End Sub
Sub Makro2()
Dim variable2
variable2 = "text2"
End Sub


Der Wert aus variable1 in Makro1 ist für Makro2 NICHT verfügbar. Für Makro2 ist variable1 = "", obwohl variable1 doch in Makro1 den Wert "text1" zugewiesen bekam.
Der Wert aus variable2 in Makro2 ist für Makro1 NICHT verfügbar. Für Makro1 ist variable2 = "", obwohl variable2 doch in Makro2 den Wert "text2" zugewiesen bekam.
Bsp mit Public


Public variable1, variable2
Sub Makro1()
variable1 = "Text1"
End Sub
Sub Makro2()
variable2 = "text2"
End Sub


Nun sind die Werte für variable1 und variable2 beide sowohl in Makro1 UND in Makro2 verfügbar, weil mit Public alle Variablen so bestimmt werden, dass sie in derselben Excel-Datei in allen Makros verfügbar sind.
Und so verhält es sich auch mit einer Variablen vom Typ Boolean.
So eine Variable kann nur den Wert 0 oder 1 annehmen - oder wahr/falsch...true/false
Du kannst das mit einem Lichtschalter - an oder aus - vergleichen.
Und genau so eine Variable benötigst du in deinem Code.
Eben eine Variable, die vor deinem Kopiercode erst mal "eingeschaltet" wird.
Und an der Stelle in einem anderen Code, wird der andere Code NUR ausgeführt, wenn die Variable NICHT "eingeschaltet" ist.
Und wenn erkannt wurde, dass der andere Code nicht ausgeführt werden darf, weil die Variable "eingeschaltet" ist, wird die Variable nach Überspringen des anderen Codes wieder "ausgeschaltet".
Hilft das?
Ciao
Thorsten

Anzeige
AW: Makro überspringen
19.08.2007 20:53:29
Alex
Hallo thorsten!
na das klingt ja nicht gerade einfach - eher ein wenig verwirrend auf den ersten Blick - aber ich werde das mal probieren - mal sehen ob ich so weiterkomme.
Melde mich nochmals - spätestens morgen.
lg alex

AW: Makro überspringen
20.08.2007 11:15:00
Daniel
Hallo
um innerhalb eines Makros das unbeabsichtigte Starten von Eventsgesteuterten Makros (so wie Worksheet_Activate) zu verhindern, verwendet man irgendwo beim Beginn des Makros den Befehl:

Application.EnableEvents = False


in deinem Fall würde dann beim Kopieren des Blattes dein Makro weiterlaufen und nicht in die Worksheet_Activate-Routine des neuen Blattes verzweigen.
allerdings darfst du nicht vergessen, beim Programmende den Wert für


Application.EnableEvents = true

zu setzen, sonst bleibt die Funktion dauerhaft deaktiviert auch außerhalb des Makros.
Problematisch wirds dann, wenn dein Makro mit nem Fehler abbricht und diese Zeile nicht erreicht wird.
du müsstest dann von Hand im Direkt-Fenster diesen Befehl eintippen, um die EVENTS-Makros wieder zu aktivieren.
Sollten mit deinem Makro aber auch Kollegen arbeiten sollen, die sich nicht mit VBA auskennen, müsstest du eine Fehlerbehandlungsroutine einprogrammieren, die bei einem Fehler angesprungen wird und die Events wieder einschaltet.
mal noch ne Frage, wenn bei dir das Worksheet_Activate des neuen Blattes einen Fehler erzeugt, was passiert dann beim Empfänger der Mail? Funktioniert es da dann einwandfrei, oder würde der auch einen Fehler bekommen?
Gruß, Daniel

Anzeige
AW: Makro überspringen
20.08.2007 20:55:26
Alex
Hallo Daniel !
Dank mal für den Hinweis - muss ich eben mal probieren.
Zu deiner Frage: Grundsätzlich sollte der Empfänger der Nachricht keine Schwierigkeiten haben. Die Problematik war, dass bereits beim Makro für die Versendung der Mail-Nachricht die Worksheet-Activate Prozedur aufgerufen wurde (Weil ich das Blatt kopiert habe). Wenn ich die Nachricht als Anhang im Outlook anhänge, funktioniert sie ja. Nur aus Excel heraus habe ich da ein Problem.
lg alex

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige