Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Makro abbrechen...

Betrifft: Makro abbrechen... von: MichiM
Geschrieben am: 25.08.2004 23:29:00

Nabend Leute,
jeden abend etwas neues :-)

Ich habe ein Makro, welches via Application.Run nacheinander andere Makros startet. Die Daten werden entsprechend der Voreinstellung zusammengestellt und ausgedruckt. Zum Abschluss wird in der jeweiligen Quelldatei das Druckdatum gespeichert.

Nun kann es ja vorkommen, dass der Druck fehlgeschlagen ist (Text unleserlich, falsches Papier, undundund). Dazu habe eine UserForm eingebaut, die nach jedem Druck fragt, ob der Druck OK ist. Bei OK wird das Datum gespeichert und das Makro läuft weiter.

Wie kann ich aber jetzt bei eine fehlerhaften Druck das Ursprungsmakro anhalten bzw. beenden (wodruch ja auch die hierdurch gestarteten Makros beendet würden)?
Application.Stop gibt es ja leider nicht :-)

Hat da einer ne Idee?

Gruss
MichiM

  


Betrifft: AW: Makro abbrechen... von: mealone
Geschrieben am: 26.08.2004 00:36:37

Hallo MichiM,

schau mal in der Hilfe unter
End-Anweisung
und/oder
Stop-Anweisung
nach danach solltest du die für dich passende entscheidung treffen können



  


Betrifft: AW: Makro abbrechen... von: MichiM
Geschrieben am: 26.08.2004 22:52:04

Entweder bin ich blind, oder es gibt einfach nichts passendes...

Folgender Code wird ausgeführt:

voran geht das Suchmakro:
Sub Auto_Kontoauszug_erstellen()
also, immer nachdem ein Datensatz gefunden wurde, wird der Code ausgeführt:


Sub Kopieren(Leile As Long)


'Kundennummer zwischenspeichern
    Worksheets("Zwischenspeicher").Cells(15, 4) = _
    Worksheets("Rechnungen").Cells(Leile, 1)

'Makros durchlaufen

'1. Rechnungsdaten suchen und einfügen (in Zwischenspeicher)
Application.Run "Auto_Ausdruck_Rechnungsdaten"

'2. Kundendaten suchen und einfügen
Application.Run "Auto_Ausdruck_Kundendaten"

'3. Auszug erstellen und drucken
If Worksheets("Zwischenspeicher").Cells(31, 8) = "" Then
Application.Run "Kontoauszug_erstellen"

Workbooks("DEBI_RE.xls").Sheets("VORLAGE_AUSZUG").Visible = True
Workbooks("DEBI_RE.xls").Sheets("Hauptmenü").Visible = False

Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("VORLAGE_AUSZUG").PrintOut
MsgBox "Kontoauszug wird gedruckt"

Workbooks("DEBI_RE.xls").Sheets("Hauptmenü").Visible = True
Workbooks("DEBI_RE.xls").Sheets("VORLAGE_AUSZUG").Visible = False

Else
Application.Run "Kontoauszug_erstellen2"

Workbooks("DEBI_RE.xls").Sheets("VORLAGE_AUSZUG2").Visible = True
Workbooks("DEBI_RE.xls").Sheets("Hauptmenü").Visible = False

Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("VORLAGE_AUSZUG2").PrintOut
MsgBox "Kontoauszug wird gedruckt"

Workbooks("DEBI_RE.xls").Sheets("Hauptmenü").Visible = True
Workbooks("DEBI_RE.xls").Sheets("VORLAGE_AUSZUG2").Visible = False


End If

'4. Auszug OK Abfrage
ufAUTO_AUSDRUCK_AUSZUG_ABFRAGE.Show

End Sub


In Auszug OK Abfrage öffnet sich nun eine UserForm, welche fragt, ob der Ausdruck OK ist.
Bei ja wird das Druckdatum gespeichert.
Bei Nein soll der o.g. Code angehalten werden. klicke ich in der suerForm auf das x rechts oben, wird der Code fortgesetzt ohne zu speichern.

Application.End beednet zwar das aktuelle Makro, aber nicht das ursprüngliche...

Kann mir da einer weiterhelfen?

Gruss
MichiM

P.S. Suche gerne in der Hilfe - da ich dieses Problem in dieser Variante nicht finden konnte, wäre es nett, wenn es dann ein direkter Link zu einem ergebniss ist - und nicht nur ein Hinweis auf die Suche... Danke


  


Betrifft: AW: Makro abbrechen... von: mealone
Geschrieben am: 27.08.2004 00:05:42

Hallo MichiM,

das mit der Excel Hilfe war nicht bös gemeint ich schreib nur ungern etwas auf was schon geschrieben steht

ich hoffe der hier hilft dir weiter

Private Sub UserForm_Terminate()
box = MsgBox("Abgefangen", vbOK)
End Sub


der reagiert auf das "x rechts oben"

Du solltest dann nur noch eine Variable füllen deren Abrage in anderen Codes diese entweder fortsetzen, unterbrechen oder anhalten

Gruss mealone