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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen