Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
MsgBox und Cancel = True
Kirsche
hallo leute,
wie solls auch anders sein, ich hab da mal ein problem ;-)
in einer UF habe ich viele viele textboxen und frames ....
bei der großen menge habe ich die prüfungen in blöcke aufgeteilt und spreche diese
bei click auf den Commandbutton mit call mein makro an.
Call Allge_Click
Call Verpa_Click
Call Naehrw_Berech
Call Allerg_Click
in den makros sind MsgBoxen, die einen Hinweis geben, was nicht abgearbeitet wurde.
if Textbox1 = "" then
msgbox "hinweis"
exit sub
end if
der hinweis wird auch angezeigt, aber das exit sub wird nur für das eine makro akzeptiert, dann läuft der code im commandbutton weiter.
ich habe auch schon ein Cancel = True eingefügt, aber das wird im Private Sub nicht erkannt.
wie kann ich aus dem makro aussteigen?
wenn Call Allge_Click mit ExitSub beendet wird, dann soll der rest im commandbutton nicht weiter verarbeitet werden.
gruß dörte

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
End
23.11.2009 22:12:21
{Boris}
Hi Dörte,
nutze die End-Anweisung - die beendet alle Makros.
Grüße Boris
AW: @ Boris
23.11.2009 22:17:14
Gerd
Guten Abend,
das gesamte Projekt "geht dann nach Hause".
Dies ist nur sehr selten beabsichtigt.
Gruß Gerd
AW: @ Boris
23.11.2009 22:28:10
Kirsche
hallo boris, hallo gerd,
ich gebe gerd vollkommen recht. das kannte ich schon und hab es raus genommen. aber trotzdem danke.
gruß dörte
AW: @ Boris
23.11.2009 22:30:36
Kirsche
ich bekomme es noch hin mit dem Frage noch offen
ist wohl schon zu spät für mich.
gruß dörte
AW: MsgBox und Cancel = True
23.11.2009 22:13:29
Gerd
Hallo Dörte,
mit Funktionen u. Rückgabewerten vom Typ Boolean, kannst Du im Hauptmakro nach jedem
Call-Aufruf prüfen, z.B.
If blnAufhoeren= true Then Exsit Sub
Anzeige
AW: MsgBox und Cancel = True
23.11.2009 22:26:15
Kirsche
hallo gerd,
wie und wo muß ich das dann deklarieren?
ich habe es so versucht:
Option Explicit
Public blnMachNix As Boolean
und bei Commandbutton_click()

Call Verpa_Click
If blnMachNix = True Then Exit Sub

aber das hat nicht geklappt.
gruß dörte
AW: MsgBox und Cancel = True
23.11.2009 22:32:02
fcs
Hallo Dörte,
Du muss am Anfang des Codes im Userformmodul eine Variable für das gesamte Userform-Modul deklarieren.
Diese Variable setzt du vor dem Aufruf der 4 Prozeduren auf True. Ist eine Eingabe unvollständig, dann wird die Variable auf False gesetzt und die Prüfung abgebrochen.
In der aufrufenden Prozedur prüfst du dann jeweils den Wert der Variablen.
Alternativ könnte man evtl. auch mit Functions statt Subs arbeiten. Dann kann man beim Abbruch der Prozedur einen entsprechenden Fehlerwert zur Prüfung an die aufrufende Prozedur übergeben und die Prozedur gesteuert beenden. Dafür ist in deinem Fall der Aufwand etwas groß die Prozeduren entsprechend umzustricken.
Gruß
Franz
'Variablendeklaration - am Anfang der Userform-Codes
Private bolEingabe As Boolean
Sub CommandButtonABC_Click()
bolEingabe = True
Call Allge_Click
If bolEingabe = False Then GoTo Ende
Call Verpa_Click
If bolEingabe = False Then GoTo Ende
Call Naehrw_Berech
If bolEingabe = False Then GoTo Ende
Call Allerg_Click
If bolEingabe = False Then GoTo Ende
Ende:
End Sub
Private Sub Allge_Click()
If Textbox1 = "" Then
MsgBox "hinweis"
bolEingabe = False
Exit Sub
End If
End Sub

Anzeige
AW: MsgBox und Cancel = True
23.11.2009 22:39:17
Kirsche
hallo franz,
strike, das hat gefunzt und ich hab wieder was dazu gelernt, voll freu hier.
danke für deine hilfe, mein abend ist dadurch gerettet.
auch den übrigen helfern möchte ich hier an dieser stelle ein großes lob aussprechen.
es macht immer wieder spaß, da eine schnelle hilfe promt herbei eilt.
ich wünsche allen eine gute nacht.
gruß dörte
AW: MsgBox und Cancel = True
23.11.2009 22:45:52
Gerd
Hallo Dörte,
je nachdem; mit Public - wie von Franz dargestellt - ist 's einfacher.
Sub Starter_egal()
If Not Allge_Click Then Exit Sub
If Not Verpa_Click Then Exit Sub
If Not Call_Naehrw_Berech Then Exit Sub
Call Allerg_Click
End Sub
Function Allge_Click() As Boolean
If TB = "" Then
MsgBox "TB fehlt!"
Else
TB = True
MsgBox "Mach noch etwas!"
End If
End Function
Gruß Gerd
Anzeige
AW: MsgBox und Cancel = True
23.11.2009 22:51:30
Kirsche
hallo gerd,
ich hab das von franz auch schon umgesetzt.
mit funktionen habe ich noch nicht so gearbeitet, höchstens kopiert und dann nicht unbedingt verstanden.
eine frage hätte ich da noch:
worin liegt der unterschied?
franz schrieb
go to ende
und bei dir lautet es
exit sub
ist das egal, wie man beendet?
gruß dörte
AW: MsgBox und Cancel = True
23.11.2009 23:03:34
Gerd
Hallo Dörte,
Exit Sub hat den selben Effekt wie eine Sprungmarke, die ganz am Ende der Prozedur steht.
Mit GoTo könntest Du z.B. die Sprungmarke auch vor den letzten oder vorletzten "Call" setzen
oder danach noch "Kosmetik" betreiben wie "Application.EnableEvents=True, falls Du diese vorher
abgestellt hättest.
Gruß Gerd
Anzeige
AW: MsgBox und Cancel = True
24.11.2009 13:19:44
kirsche
hallo gerd,
danke für die super erklärung. das hilft mir um meilen weiter. denn ich habe des öfteren abstürze, welche ich nicht verstanden habe, aber das kann daran liegen, dass einige sachen durch exit sub nicht sauber beendet wurden. das werd ich gleich mal prüfen.
gruß dörte

48 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)