kann ich in einem VBA-Code verhindern, daß ein User eine Arbeitsmappe oder Excel manuell schließt??
Ich möchte erreichen, daß der User ausschließlich über einen Beenden-Button im Makro-Ablauf (Userform) das Makro verlassen kann.
Geht das ?
Uwe
kann ich in einem VBA-Code verhindern, daß ein User eine Arbeitsmappe oder Excel manuell schließt??
Ich möchte erreichen, daß der User ausschließlich über einen Beenden-Button im Makro-Ablauf (Userform) das Makro verlassen kann.
Geht das ?
Uwe
Beim Öffnen wird erstmal alles ausgeblendet was nicht relevant ist, also also CommandBars und Menüleiste etc. und in den Ganzen Bildschirm geschaltet.
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.DisplayFullScreen = True <-- Das hier ist wichtig !!
Application.CommandBars("Standard").Visible = False
Application.CommandBars("Formatting").Visible = False
Application.CommandBars("Worksheet Menu Bar").Enabled = False
Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False
ActiveWindow.DisplayWorkbookTabs = False
Application.UserName = Environ("USERNAME")
Application.Caption = "Bearbeitung durch " + Environ("USERNAME")
Application.ScreenUpdating = True
End Sub
Beim schliessen sollte natürlich alles wieder auf Standard gesetzt werden.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
Application.DisplayFullScreen = False
ActiveWindow.DisplayWorkbookTabs = True
Application.ScreenUpdating = True
ActiveWorkbook.Saved = True
End Sub
Dann habe ich auch noch meine eigene CommandBar in der folgende Makros aufgerufen werden:
Sub endeMitSpeichern()
Application.ScreenUpdating = False
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
ActiveWindow.DisplayWorkbookTabs = True
Application.DisplayFullScreen = False
Application.ScreenUpdating = False
ActiveWorkbook.Save
Application.Quit
End Sub
Sub endeOhneSpeichern()
Application.ScreenUpdating = False
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Formatting").Visible = True
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
ActiveWindow.DisplayWorkbookTabs = True
Application.DisplayFullScreen = False
Application.ScreenUpdating = False
ActiveWorkbook.Saved = True
Application.Quit
End Sub
Überflüssigen Code habe ich aus Platzgründen entfernt. Ich habe mir sicherheitshalber noch einen Shortcut vorbereitet mit dem ich die Menüleiste und weiteres bei Bedarf einblenden kann:
Sub MenueAktiv()
Application.CommandBars("Worksheet Menu Bar").Enabled = True
CommandBars("Standard").Visible = True
CommandBars("Formatting").Visible = True
ActiveWindow.DisplayWorkbookTabs = True
End Sub
Hoffe, damit schon mal einen Ansatz zum Probieren gegeben zu haben.
MfG
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets("Start").txt_Kennwort <> "test" Then
Cancel = True
End If
End Sub
die Arbeitsmappe kann erst geschlossen werden wenn ich in der TEXTbox den wert test eingebe.