Zeilen löschen verhindern ohne Blattschutz

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Zeilen löschen verhindern ohne Blattschutz
von: Miriam
Geschrieben am: 21.10.2015 14:42:33

Hallo zusammen,
in einem Tabellenblatt soll es dem Anwender nicht erlaubt sein, komplette Zeilen zu löschen.
Verwende ich den Blattschutz ist aber zum Beispiel das Einfügen von Pivot Tabellen nicht mehr möglich. Dem Anwender sollen allerdings alle Funktionen zur Verfügung stehen (außer Zeilen löschen).
Ich habe bereits versucht die Befehle "Zeilen löschen" zu deaktivieren.
Dies funktioniert auch so weit. Bis auf das Ausblenden aus dem Menüband.
Ich würde das ganze gerne mit VBA lösen. Jemand weitere Ideen?
Gibt es eine Möglichkeit zum Beispiel, dass der Löschvorgang nicht zu Ende gebracht werden kann?
Gruß
Miriam

Bild

Betrifft: AW: Zeilen löschen verhindern ohne Blattschutz
von: Daniel
Geschrieben am: 21.10.2015 15:18:30
Hi
probier mal folgenden Code im Modul des Tabellenblatts

Option Explicit
Dim Zeilen As Long
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("xxx").Rows.Count < Zeilen Then
    MsgBox "Sie dürfen keine Zeilen löschen"
    With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
    End With
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Names.Add "xxx", Me.UsedRange
Zeilen = Range("xxx").Rows.Count
End Sub
es muss aber klar sein, dass Schutzfunktionen, die auf Eventmakros beruhen, mit einem Mausklick ausgeschaltet werden können.
Gruß Daniel

Bild

Betrifft: AW: Zeilen löschen verhindern ohne Blattschutz
von: Miriam
Geschrieben am: 21.10.2015 19:00:11
Vielen Dank für die schnelle Antwort!
Leider habe ich noch nie mit me gearbeitet. was muss ich an der Stelle für "xxx" bei Me.Name.Add einsetzten?

Bild

Betrifft: AW: Zeilen löschen verhindern ohne Blattschutz
von: Daniel
Geschrieben am: 21.10.2015 21:10:52
Hi
ME ist immer das Objekt, in dessen Modul man sich gerade befindet, dh hier das Tabellenblatt.
statt ME könntest du auch schreiben Sheets("Tabelle1") wenn das Blatt so heisst.
Mehr steckt da nicht dahinter.
für das "xxx" kannst du jeden beliebigen Text einsetzen, sofern der Text als Excelname zulässig ist (kein Leerzeichen, nicht verwechselbar mit einer Zelladresse)
du kannst das "xxx" aber auch einfach so stehen lassen.
Gruss Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeilen löschen verhindern ohne Blattschutz"