Herbers Excel-Forum - das Archiv

VBA: MsgBox: yes/no. Bei yes andere Datei öffnen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Betrifft: VBA: MsgBox: yes/no. Bei yes andere Datei öffnen
von: Max

Geschrieben am: 12.09.2019 12:12:32
Hallo zusammen
Ich habe eine Exceldatei (Name: Kompetenzmatrix), in der eine Kompetenzmatrix div. Mitarbeiter aufgelistet ist. Wenn die Kompetenzmatrix geschlossen wird, soll eine MessageBox mit den Schaltflächen "ja" / "nein" erscheinen.
Wenn "ja" gewählt wird, soll eine andere Exceldatei (Name: Ferienkalender) geöffnet und die Kompetenzmatrix geschlossen werden,
wenn "nein" gewählt wird, soll die Kompetenzmatrix einfach nur geschlossen werden.
Solange ich den VBA-Editor geöffnet habe und das Makro über die Schaltfläche "Sub/UserForm ausführen" starte, funktioniert es grundsätzlich Einwand frei. Sobald ich den VBA-Editor geschlossen habe und die Datei schliesse, kommt die MessageBox, ich drücke "ja" und der Ferienkalender geht ganz kurz auf und schliesst aber sofort wieder.
Da ich noch am Anfang meiner "VBA-Karriere" stehe, hab eich mir den Code aus verschiedenen Codes aus Forumsbeiträgen etc. zusammengeschustert...
Was muss ich an meinem Code ändern, damit der Ferienkalender offen bleibt?
Private Sub Auto_Close()
If MsgBox("Hast Du eine(n) Mitarbeiternamen hinzugefügt, geändert oder entfernt? -->  _
Ferienliste anpassen!" & vbCrLf & "Ja oder nein?", vbYesNo + vbQuestion) = vbYes Then
Workbooks.Open "**kompletter Dateiname**"
Else
Exit Sub
End If
End Sub
Danke und Gruss
Max

Betrifft: AW: VBA: MsgBox: yes/no. Bei yes andere Datei öffnen
von: 1712664.html
Geschrieben am: 12.09.2019 12:43:15
Hallo Max,
versuch mal den Code in das Codefenster fuer das Workbook im Before_Close Ereignis auszufuehren.
Dann sollte der Code auch erst richtig abgearbeitet werden bevor die Datei schliesst.
Gruss Torsten

Betrifft: AW: VBA: MsgBox: yes/no. Bei yes andere Datei öffnen
von: 1712676.html

Geschrieben am: 12.09.2019 13:09:50
Hallo Torsten
Besten Dank schon mal für deine Message! :)
Also wenn ich dich richtig verstanden habe, meinst du den Code so abzuändern?:
Private Sub Before_Close()
If MsgBox("Hast Du eine(n) Mitarbeiternamen hinzugefügt, geändert oder entfernt? -->  _
Ferienliste anpassen!" & vbCrLf & "Ja oder nein?", vbYesNo + vbQuestion) = vbYes Then
Workbooks.Open "C:\Users\MKU\Regent Beleuchtungskörper AG\PMO_Operations - Dokumente\ _
02_Projekte\3_1008_POC PEP\03_Dokumentation\PEP\Ferienplanung\Ferienkalender\Ferienkalender_Test_2.xlsm"
Else
Exit Sub
End If
End Sub
Mit diesem Code geschieht gar nichts mehr, keine MessageBox, kein geöffneter Ferienkalender... nur die Kompetenzmatrix die geschlossen wird.
Habe ich deinen Tipp richtig umgesetzt? ansonsten wäre ich dir um eine etwas detailliertere Erklärung sehr dankbar. :) Meine VBA-Kenntnisse beschränken sich wirklich auf ein absolutes Minimum -.-
Gruss Max

Betrifft: AW: VBA: MsgBox: yes/no. Bei yes andere Datei öffnen
von: 1712679.html

Geschrieben am: 12.09.2019 13:17:53
Nein nicht so ganz.
Im VBE Fenster doppelklickst du links auf "ThisWorkbook". Dann den folgenden gesamten Code rechts in das leere Fenster kopieren:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Hast Du eine(n) Mitarbeiternamen hinzugefügt, geändert oder entfernt? -->  _
Ferienliste anpassen!" & vbCrLf & "Ja oder nein?", vbYesNo + vbQuestion) = vbYes Then
Workbooks.Open "C:\Users\MKU\Regent Beleuchtungskörper AG\PMO_Operations - Dokumente\ _
02_Projekte\3_1008_POC PEP\03_Dokumentation\PEP\Ferienplanung\Ferienkalender\Ferienkalender_Test_2.xlsm"
Else
Exit Sub
End If
End Sub


Dann wird der Code ausgefuehrt, wenn du diese Datei schliesst.
Gruss Torsten

Betrifft: AW: VBA: MsgBox: yes/no.
von: 1712680.html

Geschrieben am: 12.09.2019 13:19:54
Hallo,
auto_close und auto_open sind schon lange out.
In DieseArbeitsmappe:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Hast Du eine(n) Mitarbeiternamen hinzugefügt, geändert oder entfernt? -->  _
Ferienliste anpassen!" _
& vbCrLf & "Ja oder nein?", vbYesNo + vbQuestion) = vbYes Then
Workbooks.Open "**kompletter Dateiname**"
End If
End Sub

Gruß
Rudi

Betrifft: AW: VBA: MsgBox: yes/no.
von: 1712684.html
Geschrieben am: 12.09.2019 13:29:49
Du hast das Else Exit Sub vergessen, weil er die Datei nicht schliessen will, wenn Nein.
Gruss Torsten

Betrifft: AW: VBA: MsgBox: yes/no.
von: 1712689.html

Geschrieben am: 12.09.2019 14:11:00
Hi ihr zwei
Also mit beiden Codes hatte ich plötzlich folgende Fehlermeldung:
Laufzeitfehler '1004': Die Methode 'Open' für das Objekt 'Workbooks' ist fehlgeschlagen
habe nun nach dieser Fehlermeldung gesucht und eine Lösung gefunden und den Code von Torsten folgendermassen angepasst:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Hast Du eine(n) Mitarbeiternamen hinzugefügt, geändert oder entfernt? -->  _
Ferienliste anpassen!" & vbCrLf & "Ja oder nein?", vbYesNo + vbQuestion) = vbYes Then
Application.Workbooks.Open "C:\Users\MKU\Regent Beleuchtungskörper AG\ _
PMO_Operations - Dokumente\02_Projekte\3_1008_POC PEP\03_Dokumentation\PEP\Ferienplanung\Ferienkalender\Ferienkalender_Test_2.xlsm"
Else
Exit Sub
End If
End Sub
Nun funktionierts! :)
Vielen lieben Dank euch beiden für die schnelle Hilfestellung!!
LG und schönen Tag noch
Max

Betrifft: das stimmt nicht, Torsten
von: 1712781.html
Geschrieben am: 12.09.2019 22:33:24
wenn "nein" gewählt wird, soll die Kompetenzmatrix einfach nur geschlossen werden.
Außerdem müsste man, wenn die Datei doch nicht geschlossen werden soll, Cancel=True setzen.
Gruß
Rudi

Excel-Beispiele zum Thema "VBA: MsgBox: yes/no. Bei yes andere Datei öffnen"
Blätter in andere Arbeitsmappen kopieren Variablenübergabe in andere Arbeitsmappen
Bezüge auf Namen in anderen Mappen aufheben Blattinhalt von einer zur anderen Arbeitsmappe kopieren
Sicherungskopie in einem anderen Verzeichnis erstellen Teilergebnisse einer Serie von Tabellen in anderes Blatt kopieren
Bei Eingabe andere Werte löschen Eintragungen im 1. Blatt in andere Blätter übernehmen
Währung in der Systemsteuerung/Ländereinstellungen umstellen Zeile mit aktiver Zelle in anderes Blatt kopieren