Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Spalte löschen per VBA unterbinden

Spalte löschen per VBA unterbinden
10.07.2018 18:01:12
Olaf
Hallo!
Ich habe schon stundenlang gesucht, aber alle Lösungen beziehen sich darauf, die CommandBar-Controls 293 bzw. 294 aus (und ggf wieder ein) zu schalten.
Z.B. will ich hier verhindern, dass die Spalte 2 gelöscht wird.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
With Application
.CommandBars("Column").FindControl(ID:=294).Enabled = False
End With
Else
With Application
.CommandBars("Column").FindControl(ID:=294).Enabled = True
End With
End If
End Sub

In Excel 2016 ist es nun aber so, dass
a) beim Markieren der gesamten Spalte 2 das Löschen der Zellen im Kontextmenü ausgegraut ist - POSITIV
b) beim Markieren nur einer Zelle in Spalte 2 über das Kontextmenü "Zellen löschen" und anschließend die Auswahl "ganze Spalte" zur Verfügung steht und leider auch funktioniert - NEGATIV,
c) unabhängig von der Auswahl im Ribbon "Start - Zellen - Löschen" Blattspalten zur Verfügung steht und leider auch funktioniert - NEGATIV.
Eine Liste der CommandBar-Control-IDs habe ich mir hiermit generiert: https://www.herber.de/forum/archiv/544to548/547021_Commandbar_Controls.html
Dort finde ich aber nichts, was Problem b und c zu lösen scheint.
Hat jemand eine Idee?
Danke, Olaf
PS: Ich kann beim Erstellen dieses posts nicht 2016 als Excel-Version auswählen.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW:Blattschutz? (owT)
10.07.2018 18:06:13
Fennek
AW: Spalte löschen per VBA unterbinden
10.07.2018 18:36:22
Daniel
Hi
probier mal folgendes:
1. Definiere eine Namen, der sich auf die Spalte 2 des Blattes bezieht (z.B. "zzz")
2. erstelle dieses Change-Event-Makro. Es führt ein UNDO aus, wenn die Spalte 2 gelöscht oder verschoben wird
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Check As Range
On Error Resume Next
Set Check = Range("zzz")
On Error GoTo 0
With Application
.EnableEvents = False
If Check Is Nothing Then
.Undo
Else
If Check.Column  2 Then
.Undo
End If
End If
.EnableEvents = True
End With
End Sub
funktioniert zwar nur mit aktivierten Makros und ist mit einem klick deaktiviert, reicht aber meistens, um einen vor unbeabsichtigten Löschungen zu schützen.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige