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

mehrere MsgBoxen miteinander verküpfen

mehrere MsgBoxen miteinander verküpfen
10.03.2016 16:45:06
Fred
Hallo zusammen,
ich bin gerade wieder am verzweifeln :-(
ich möchte beim Speichern das mehrere MsgBoxen hintereinander aufgehen je nachdem ob ja oder nein betätigt wird.
der Code für die Grund-MsgBox ist wie folgt:
Dim byWert As Byte
byWert = MsgBox("Text", 4, "")
If byWert = 6 Then
....
ElseIf byWert = 7 Then
....
End If
Die erste MsgBox habe ich unter der Prozedur Before_Save eingefügt. Die nachfolgenden unter Module, mit "Call ..."
Jetzt solle folgendes beim speichern passieren:
1. Speichern drücken
2. MsgBox = "Haben Sie eine Veränderung an der Datei durchgeführt?
Nein = MsgBox "Die Datei wird jetzt gespeichert"Speichern erfolgt
Ja = zweite MsgBox öffnet sich
3. zweite MsgBox = "Waren die Veränderungen in Bereich A?
Nein = dritte MsgBox öffnet sich
Ja = vierte MsgBox öffnet sich
4. dritte MsgBox = "Die Änderungen werden gespeichert" speichern erfolgt

5. vierte MsgBox = "Haben Sie die Veränderungen auf einer separaten Karte gedruckt?"
Nein = fünfte MsgBox = "Die Änderungen wurden nicht gespeichert, drucken Sie die Karte!" speichern abbrechen
Ja = sechste MsgBox öffnet sich
6. sechste MsgBox = "Bitte legen Sie die Karte in die Ablage" speichern erfolgt
Ich habe das mit dem MsgBoxen die sich hintereinander öffnen, über Module hinbekommen, allerdings klappt es nicht, das ich aus einem Modul den Speichervorgang abbreche, bzw. aus dem Modul einen Sub in der Arbeitsmappe anspreche, falls man das Speichern nur in "dieseArbeitsmappe" abbrechen könnte.
Er speichert immer, egal welche MsgBox gewählt wird. :-(
Hatte auch versucht, direkt die MsgBoxen untereinander in "dieseArbeitsmappe" im Sub Before_Save zu "verknüpfen", aber da müssen dann Zeilen beim durchlaufen des Codes einiger MsgBoxen übersprungen werden, je nachdem was der Anwender drückt. Hat also auch nicht funktioniert...
Hat jemand eine Idee, wie man in dem Fall den "Weg des Durchlaufens" realisieren kann?
Viele Grüße
Fred

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere MsgBoxen miteinander verküpfen
10.03.2016 18:29:15
ChrisL
Hi Fred
Interessante Frage. Bekanntlich führen viele Weg zum Abbruch und ich bin gespannt, welche Ansätze sonst noch vorgeschlagen werden.
1. Grundsätzlich könntest du es auch innerhalb Before_Save realisieren. Dazu müsstest du die If-Then in einander verschachteln. Der Code wird aber zugegeben sehr unübersichtlich.
2. Überspringen (ich nehme an, du meinst "GoTo"), auch nicht schön.
3. Unter-Prozeduren wie von dir vorgeschlagen und wie du schon richtig festgestellt hast, muss der Abbruch-Befehl zurück ins Before_Save. Dies könnte mit einer globalen/public Variable geschehen.
4. Meine bevorzugte Variante ist mit Funktionen arbeiten. Funktionen sind fast gleich wie Prozeduren, nur hast du die Gelegenheit einen Wert zurück zu geben. In diesem Beispiel True/False, was der Abbruchbefehl ist. Abstrakt sieht es dann wie folgt aus:
Before_Save:
If AbbruchFragen = True Then
Cancel = True
Else
mach was
End If
Function AbbruchFragen() As Boolean
If Frage1 = True Then
AbbruchFragen = True
Exit Function
End If
If Frage2 = True Then
AbbruchFragen = True
Exit Function
End If
'usw.
End Function
Function Frage1() As Boolean
Dim byWert As Byte
byWert = MsgBox("Text", 4, "")
If byWert = 6 Then Frage1 = True
End Function

Function Frage2() As Boolean
Dim byWert As Byte
byWert = MsgBox("Text", 4, "")
If byWert = 6 Then Frage2 = True
End Function

Man könnte theoretisch noch einen Schritt weiter gehen und die MsgBox-en, welche identisch sind, ebenfalls in eine Funktion verpacken.
Sub test()
If FrageBox("Dies ist meine Frage") = True Then MsgBox "Antwort ja"
If FrageBox("Jetzt eine andere Frage") = True Then MsgBox "Antwort ja"
End Sub

Function FrageBox(strFrage As String) As Boolean
Dim byWert As Byte
byWert = MsgBox(strFrage, 4, "")
If byWert = 6 Then FrageBox = True
End Function

Ich hoffe der Lösungsansatz gefällt.
cu
Chris
PS: I love functions :)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige