Microsoft Excel

Herbers Excel/VBA-Archiv

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

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


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

Beiträge aus dem Excel-Forum zum Thema "VBA: MsgBox: yes/no. Bei yes andere Datei öffnen"