Wie kann ich mittels VBA verhindern, dass Zeilen gelöscht bzw. eingefügt
werden.
Vielen Dank schon mal!
Matthias
Hast du schonmal an den Blattschutz gedacht?
Den kann man bestimmt auch per VBA aktivieren.
Gruss
Marco
Matthias schrieb:
Kann man nicht einfach den Befehl "Zeilen löschen", "Zeilen einfügen" aus
der Menü- und Symbolleiste verbannen oder deaktivieren ?
Matthias
"Marco" schrieb:
eine Möglichkeit wäre es mit UNDO, versuche mal mit dem Code im
entsprechenden Tabellenblatt. Es ist für XL in deutsch Test ->"Zellen
löschen" usw ggf anpassen.
Private Sub Worksheet_Change(ByVal Target As Range)
If Mid(Application.CommandBars(1).FindControl(ID:=128, _
Recursive:=True).Caption, 14, 16) = "Zellen löschen" Or _
Mid(Application.CommandBars(1).FindControl(ID:=128, _
Recursive:=True).Caption, 14, 16) = "Zellen einfügen" Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub
mfG
Wolfgang Habernoll
schau dir mal die Hilfe in VBA zu den Boolean-variablen
allowdeletingrows
allowinsertingrows
allowdeletingcolumns
allowinsertingcolumns
an, sowie die Protect-Methode.
Ich hoffe es hilft dir etwas weiter. Die Beispiele sind da nicht
schlecht, denke ich.
Gruss
Marco
Matthias schrieb:
> Kann man nicht einfach den Befehl "Zeilen löschen", "Zeilen einfügen" aus
> der Menü- und Symbolleiste verbannen oder deaktivieren ?
With Application.CommandBars(1)
.Controls("Bearbeiten").Controls("Zellen löschen...").Enabled = False
.Controls("Einfügen").Controls("Zeilen").Enabled = False
End With
die Kontextmenüs der Zeilen/Spaltenüberschriften sind mit
CommandBars("Row") bzw "Column" ansprechbar.
Wichtig! Beim beenden der Datei bzw beim Wechsel in eine andere Datei
die Werte wieder auf True setzen, Excel merkt sich die Einstellungen.
Bei Bedarf kannt du anstatt Enabled mit OnAction eine eigenes Makro
starten, zB eine MsgBox, dass das löschen/einfügen nicht erlaubt ist.
Auch hierbei unbedingt das zurücksetzen beachten (OnAction ="")!
Gruß
stefan