Tabellenblätter in Excel in Excel haben nicht nur einen (sichtbaren) Namen, der vom Anwender oder von der Anwenderin geändert werden kann. Im VBA-Editor gibt es auch noch einen Name (Codename), der nur dort und nur per Hand geändert werden kann. Ich kann nun per Programmierung leicht überprüfen, ob alle Tabellen, die ich benötige, noch vorhanden sind. Ich habe eine Funktion GibtEsTabellenblatt geschrieben, die überprüft, ob die aktuelle Datei ein Tabellenblatt mit einem solchen Codenamen hat. Ich möchte die Arbeitsmappe nicht schützen, weil der Anwender oder die Anwenderin neue Blätter hinzufügen, löschen, umbenennen darf. Allerdings: meine Blätter dürfen nicht gelöscht werden. Ich sehe nach:
Jedes der Tabellenblätter hat ein Ereignis BeforeDelete:
Dieses Ereignis hat allerdings kein Abbruchkriterium (Cancel), mit dem man das Löschen verhindern könnte.
Der zweite Blick fällt auf das Objekt Workbook. Gibt es dort ein Abbruchparameter?
Das Ereignis dort heißt SheetBeforeDelete und hat auch keinen solchen Parameter:
Allerdings einen Parameter Sh mit dem ich gezielt überprüfen kann, welches Blatt nicht gelöscht werden darf (und die Liste schnell erweitern kann:
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
End Select
Problem: Die Meldung wird angezeigt und DANN das Blatt gelöscht. Doof!
Nächster Versuch: Und wenn ich DANACH die Arbeitsmappe schütze?
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
Klappt! Hier die drei Meldungen, die erscheinen:
Allerdings: DANN ist die Arbeitsmappe geschützt. Was ich ja eigentlich nicht wollte. Also flux den Arbeitsmappenschutz wider aufheben. Wo? Am besten beim Wechseln auf ein anderes Arbeitsblatt:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
ThisWorkbook.Unprotect
End Sub
Ich bereite gerade eine Excelschulung vor. Dabei bin ich über einen Artikel von Andreas Thehos gestolpert. Er beschreibt folgenden Bug in Excel:
Angenommen man hat eine Tabelle mit Berechnungen und wandelt sie in eine intelligente Tabelle um. Dabei werden in Bezügen der eigene Tabellenblattname genannt.
Sortiert man nun diese Tabelle, beispielsweise nach Spalte C (Radius), so wird die berechnete Spalte nicht mitsortiert.
Für „normale“ Listen habe ich diesen Bug hier auf excel-nervt.de schon mehrfach beschrieben. Das Erstaunlich ist, dass dieses Phänomen auch bei intelligenten Tabellen eintritt, die doch eigentlich die Aufgabe haben sollten, die Zeilen zusammenzuhalten.
In der letzten Excelschulung rief mich eine Teilnehmerin zu sich, weil sie nicht mehr sortieren und filtern konnte:
Die Antwort war schnell gefunden: Sie hatte zwei Tabellenblätter markiert:
Warum? Wir hatten zuvor gelernt, dass man in großen Tabellen schnell mit [⇑] + [Strg] + [↓] (beziehungsweise den anderen drei Pfeiltasten/Cursortasten markieren kann. Sie hatte fälschlicherweise gedrückt: [⇑] + [Strg] + [Bild↓]. Damit wird zum aktuellen Tabellenblatt das nächste hinzugruppiert.
ich weiß nicht, was passiert ist: Ich habe eine Tabelle in Excel angelegt:
Die neue Tabelle
Ich wollte nun ein neues Tabellenblatt einfügen – und nun das:
???
Die Antwort: Wenn Sie genau hinsehen, haben Sie nicht ein neues Blatt, sondern ein Diagramm eingefügt. Wahrscheinlich wollten Sie die Tastenkombination [Shift] + [F11] drücken, haben aber nur [F11] gedrückt. löschen Sie das Diagramm und versuchen es noch einmal!
In einer Liste stehen Zahlenwerte. Daneben eine Spalte mit Berechnungen, beispielsweise die Mehrwertsteuer:
Trägt man nun statt der Zelle H2 den Tabellennamen und den Zellnamen ein (dies passiert, wenn man beispielsweise bei der Formeleingabe auf ein anderes Blatt wechselt), dann hat Excel kein Problem damit.
Jedoch: Sortiert man die Liste, so erstaunt das Ergebnis: Die Werte sind falsch. Schaut man sich die Formeln an, stellt man fest, dass die Bezüge nicht sortiert wurden. Anders wenn wenn man statt Blattname!Zellname nur Zellname eingegeben hätte.
Uuuuuaaaaahhhh!
Danke an Andreas Thehos für diesen wunderbaren Hinweis!
ich habe gelernt, dass man mit gedrückter [Strg]-Taste oder [Shift]-Taste mehrere Tabellenblätter markieren kann und gleichzeitig auf diesen Blättern arbeiten kann. Ich habe auch gelernt, dass ich dort die Ausrichtung eines Textes in mehreren Zellen auf mehreren Blättern gleichzeitig ändern kann, ebenso die Spaltenbreite, einen Text einfügen, die Kopfzeile verändern, die Hintergrundfarbe und noch einiges mehr.
Allerdings: Die Schriftfarbe kann ich nicht ändern, oder?
Auf dem Blatt Österreich wird der Text rot formatiert …
… auf dem Blatt Schweden wird diese Farbe nicht übernommen.
Die Antwort: Sie haben zwar alle Blätter markiert, haben dann aber auf dem Blatt „Österreich“ die Zelle editiert.. Das heißt: Text in der Zelle markiert und formatiert. DAS dürfen Sie nicht! Sie müssen „auf“ der Zelle „sitzen“ und die Schriftfarbe ändern – dann funktioniert es auch!