Hunde, die schellen, beißen nicht.
Guten Tag
Ich habe genau dieses Problem, mit dem Löschen verhindern von einzelnen Tabellenblättern.
Die hier gezeigte Lösung erscheint recht logisch und einfach und wollte es auch in meiner Datei ausprobieren.
Habe den Code so übernommen (im Case-Bereich dann die Tabellenblätter die Benennungen angepasst)
Also:
Private Sub Workbook_SheetBeforeDelete(ByVal Sh As Object)
On Error Resume Next
Select Case Sh.CodeName
Case "tbl_Unternehmen", "tbl_Standorte", "tbl_Zuordnung1", "tbl_Organisationseinheit", "tbl_Zuordnung2", "tbl_Geschaeftsprozesse", "tbl_Zuordnung3", "tbl_Uebungstyp", "tbl_Szenario", "tbl_Verantwortlich", "tbl_Uebungsplanung", "tbl_Zuordnung4"
MsgBox "Bitte löschen Sie nicht das Tabellenblatt """ & Sh.Name & """!", vbCritical
ThisWorkbook.Protect
End Select
End Sub
Nur bei Sh.CodeName gibt es mir für CodeName immer „DieseArbeitsmappe“ an, statt den den eigentlichen Tabellenname.
Was mache ich falsch?
Vielen Dank für einen Tipp
Freundliche Grüsse
####
Hallo Herr W.,
Sie sind in „DieseArbeitsmappe“?
Sie sind im Ereignis: SheetBeforeDelete?
Testen Sie mal am besten in einer anderen, leeren Datei):
Private Sub Workbook_SheetBeforeDelete(ByVal Sh As Object)
MsgBox Sh.CodeName
MsgBox TypeName(Sh)
End Sub
Bei mir wird IMMER der Codename des Blattes angezeigt.
Bei Ihnen?
Liebe Grüße Rene Martin