Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

BeforeClose schliesst die Datei nicht
#1
Sehr geehrte Kollegen, 

Ich versuche seit einigen Tagen ein VBA aufzustellen was mir eine Art Log-Datei erstellt in meinem Excel. Also jedes mal wenn jemand aussteigt muss er seinen Namen eingeben bevor die Datei geschlossen werden kann. 

Mein Problem, ist jetzt gerade, dass die Datei sich nicht schließt, nachdem die Log-Daten eingetragen wurden. 

Ich nehme an der fehler liegt irgendwo im folgenden Code. Habe diesen auch versucht umschweifend zu erläutern. 


Da ich die Datei gerade nicht schliessen kann, kann ich sie leider auch nicht hochladen :/ Falls erwünscht kann ich den ganzen Code hochladen. 

Liebe Grüße.

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'This is the principial Event-Handler Macro, this will call two seperate Macros:
' i)The Sub Test is linked to the CreateSheetFuntion which also has an error-handling Function
'ii)The Sub Add_Entry_to_Log, will force the user to enter some Log Data before closing the Sheet
Dim answer As Variant
answer = MsgBox("Are your sure you want to close the workbook?", vbYesNo)
Cancel = False
Select Case answer
   Case Is = vbYes
   Call Test ' this sub will create a worksheet called Log if there is none in the workbook
   Call Add_Entry_to_Log ' sub will add a log entry before closing
   If result_LOG = False Then Cancel = True ' if the Add_Entry_Log is canceled the result_Log variable will prevent the Workbook from closing
   
   Case Is = vbNo
   Cancel = True
End Select

ThisWorkbook.Save


End Sub
Antworten Top
#2
Hallo,

was passiert da:


Code:
If result_LOG = False Then Cancel = True ' if the Add_Entry_Log is canceled the result_Log variable will prevent the Workbook from closing


???
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Hallo Edgar, 


Ich habe es nun geschafft, die Datei zu speichern und hochzuladen indem ich die genau diese Zeile auskommentiert habe, alles leigt der Fehler wohl genau dort. 

Ich will das Hauptmakro ganz abbrechen, also das schließen der datei stoppen, wenn das untermakro abgebrochen wird (d.h. wenn jemand seinen Namen nicht eingeben will oder auf abbrechen drückt.). Für diesen Sinn habe ich die Result_log Variable benutzt.

Die Variable entspringt dem Untermakro Add_entry_to_log und ich dachte dass ich die mein Hauptmakro einbauen konnte.

Liebe Grüße.


Angehängte Dateien
.xlsm   Log-Book.xlsm (Größe: 25,43 KB / Downloads: 1)
Antworten Top
#4
Ich würde mich jedoch sehr freuen wenn mir jemand helfen könnte. 

Ich wäre froh, dass sich das Workbook nicht schließt wenn das Untermakro abgebrochen wird. 

Denke habe mich nicht deutlich genug ausgedrückt.  Angel

Liebe Grüße.
Antworten Top
#5
Hallöchen,

mal zwei Ansätze.

Zum einen könntest Du eine globale Variable, z.B. boVar, definieren, die Du erst mal m Before_Close auf False setzt.
Nur wenn das Untermakro erfolgreich durchläuft, setzt Du sie dort auf True. Oder setzt sie am Anfang auf True und am Ende auf False.
Die Variable kannst Du dann im Before_Close prüfen bzw gleich verwenden: Cancel = boVar oder Cancel = Not boVar

Zum anderen könntest Du die Untermakros als Function defiinieren mit einem boolschen Rückgabewert, z.B.

Private Function Add_Entry_to_Log() as boolean
...
Add_Entry_to_Log = True
End Function


Im Before_Close schreibst Du was wie

boCancel = Add_Entry_to_Log ' sub will add a log entry before closing

und weiter unten dann

Cancel = Not boCancel
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste