AW: "workbook_before_close" kann doch nicht ....
09.05.2008 19:13:00
Daniel
So hier nochmal die Originale aus der Datei:
1. Diese Arbeitsmappe:
Option Explicit
Const Start = "Startmenu"
Const OhneMakros = "Warnung"
Private Sub workbook_activate()
Set_Zoom
Startmenue
LockWindow
End Sub
Private Sub workbook_deactivate()
UnlockWindow
End Sub
Private Sub Startmenue()
Dim wks As Worksheet
Sheets(Start).Visible = True
For Each wks In Worksheets
If wks.Name Start Then wks.Visible = xlSheetVeryHidden
Next
End Sub
Private Sub workbook_beforeclose(Cancel As Boolean)
Dim auswahl
Dim Dateiname As String
Dim Savepath As String
On Error Resume Next
MkDir ("c:\temp")
Savepath = "c:\temp"
auswahl = MsgBox("Wollen Sie die Datei vor dem Schliessen speichern?", vbYesNoCancel, "Datei _
speichern")
Select Case auswahl
Case vbCancel
Cancel = True
Case vbNo
ThisWorkbook.Close savechanges:=False
Exit Sub
End Select
End Sub
Private Sub AllesAusblenden()
Dim ws As Worksheet
Sheets(OhneMakros).Visible = True
For Each ws In ActiveWorkbook.Worksheets
If ws.Name OhneMakros Then ws.Visible = xlSheetVeryHidden
Next ws
End Sub
2. Startsheet:
Option Explicit
Const Start = "Startmenu"
Const OhneMakros = "Warnung"
Private Sub worksheet_activate()
Set_Zoom
Worksheets(Start).scrollarea = "a1:j41"
End Sub
Private Sub CommandButton1_Click() 'Auswahl Checkliste Vorbereitung
Sheets("Vorbereitung1").Visible = True
Sheets(Start).Visible = False
End Sub
Private Sub CommandButton2_Click() 'Auswahl Checkliste Verhandlungsziele
Sheets("Kostenziele").Visible = True
Sheets(Start).Visible = False
End Sub
Private Sub CommandButton3_Click() 'Auswahl Checkliste Abgrafe allgemein
Sheets("abfrageallg").Visible = True
Sheets(Start).Visible = False
End Sub
Private Sub CommandButton4_Click() 'Auswahl Protokoll
Sheets("Protokoll").Visible = True
Sheets(Start).Visible = False
End Sub
Private Sub CommandButton5_Click() 'Auswahl Checkliste Giessereien
Sheets("Giessereien").Visible = True
Sheets(Start).Visible = False
End Sub
Private Sub CommandButton6_Click() 'Auswahl Checkliste Schweissereien
Sheets("Schweissereien").Visible = True
Sheets(Start).Visible = False
End Sub
Private Sub CommandButton7_Click() 'Auswahl Checkliste Bearbeiter
Sheets("Bearbeiter").Visible = True
Sheets(Start).Visible = False
End Sub
Private Sub CommandButton8_Click() 'Beenden Button
Dim auswahl
Dim Dateiname As String
Dim Savepath As String
On Error Resume Next
MkDir ("c:\temp")
Savepath = "c:\temp"
If ThisWorkbook.Saved = True Then
AllesAusblenden
UnlockWindow
ThisWorkbook.Close
Else
auswahl = MsgBox("Die Datei wurde noch nicht gespeichert!" & vbLf & vbLf _
& "Jetzt speichern?", vbQuestion + vbYesNoCancel, "Datei schliessen")
Application.DisplayAlerts = False
Select Case auswahl
Case vbYes
Dateiname = InputBox("Bitte geben Sie den gewünschten Dateinamen ein!", "Speichern unter... _
")
Application.ScreenUpdating = False
AllesAusblenden
ThisWorkbook.SaveAs Savepath & "\" & Dateiname & ".xls"
MsgBox ActiveWorkbook.FullName, vbOKOnly, "Datei gespeichert unter..."
UnlockWindow
ThisWorkbook.Close
Case vbNo
AllesAusblenden
UnlockWindow
ThisWorkbook.Close savechanges:=False
Case vbCancel
End Select
End If
End Sub
Private Sub AllesAusblenden()
Dim ws As Worksheet
Sheets(OhneMakros).Visible = True
For Each ws In ActiveWorkbook.Worksheets
If ws.Name OhneMakros Then ws.Visible = xlSheetVeryHidden
Next ws
End Sub
Ziel ist es vor dem Beenden über den "Beenden-Button" nochmal zu fragen, ob die Datei gespeichert werden soll (die Datei ist in dem Fall die Kopie die sich beim Doppelklick einer xlt-Vorlage öffnet), falls nein dann soll das WB ohne zu speichern geschlossen werden, falls cancel dann passiert nichts und falls ja kommt ne Inputbox geprompted, die nach dem gewünschten Namen fragt und das WB unter diesem dann im Ordner C:\Temp speichert. So, das klappt alles soweit, nur kommt beim Beenden des WB nochmal die Abfrage von Excel, auch wenn ich displayalerts auf false setze... dies ist unerwünscht...
weiterhin kommt in der Worbook_beforeclose wie oben geposted die Msgbox beim Klick auf "Abbrechen" nur einmal, beim drücken auf "Nein" aber zweimal ?!? ebenfalls unerwünscht... (die "case vbyes" Zeilen habe ich jetzt nochmal rausgelassen, bis das ganze prinzipiell funktioniert...).
Danke für jeden Denkanstoss,
Daniel