Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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.

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

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige