182 Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Experte (2.5k Punkte)
Hallo und guten Morgen,

wollte mal fragen ob es eine Möglichkeit gibt wenn ich eine Zelle anklicke, dass die davor liegende Zelle automatisch gelöscht wird. Ist da machbar?

Bespiel: ich klicke in Zelle b4 soll der wert in Zelle a4 gelöscht werden usw. c4 b4 löschen d4 c4

Wenn möglich, kann mir jemand eine Lösung vorschlagen

Gruß Adde

7 Antworten

+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Adde,

du kannst das Ereignis entweder mit Klick auf die rechte Maustaste (siehe Beispiel) oder auch mit Doppelklick auslösen. Kopiere dazu das folgende Makro in das VBA-Projekt der entsprechenden Tabelle:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'Inhalt der Spalte davor löschen
Target.Offset(0, -1).ClearContents
'Menü der rechten Maustaste nicht anzeigen
Cancel = True

End Sub

Du kannst auch das Selection-Change-Ereignis wählen, aber dann wird immer, wenn du eine andere Zelle auswählst, die Zelle in der Spalte vor der ausgewählten Zelle gelöscht. Das würde ich hier nicht machen.

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)
Bearbeitet von addeguddi

Hallo M.O.

vielen lieben Dank für deine schnelle Antwort. 

Habe nur den unteren Teil des Makros eingefügt, da schon der Befehl ...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Vorhanden ist. Dann funktionierte es.
Herzlichen Dank 
Noch eine Nachfrage: wenn ich jetzt in Zelle a4 klicke das für eine 1 steht erscheint Laufzeitfehler 1004 kann man da auch etwas machen? alles andere ist ok.
Wenn ich auf beenden klicke ist alles Ok
Gruß Adde
+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Adde,

der Fehler kommt, da es keine Spalte vor A mehr gibt. Ändere das Makro wie folgt, dann wird das Makro erst ausgeführt, wenn du in eine Zelle ab Spalte B klickst:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Column > 1 Then
  Target.Offset(0, -1).ClearContents
  'Menü der rechten Maustaste nicht anzeigen
  Cancel = True
End If

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)
Guten Morgen M.O.

Danke für deine Hilfe Habe das Makro eingefügt.

Alles super.

Schönen Tag wünsche ich dir

Gruß Adde
0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)
Hallo M.O.

ich war wieder wie immer zu schnell mit dem Antworten. Habe nun das Problem, dass wenn ich in eine X - beliebige Zelle klicke, das die davor liegende Zelle gelöscht wird. Diese Makro dürfte nur für die Zellen A4 bis I4 greifen.

Wenn ich jetzt in Zelle B5 klicke wird der Wert in Zelle A5 gelöscht, das sollte nicht geschehen, da ich diese Werte für die Auswertung brauche.

Kann man das so Programmieren, dass das nur auf die Zellen A4 bis Zelle I4 greift?

Gruß Adde
+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Adde,

hier das geänderte Makro:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Not Intersect(Target, Range("B4:I4")) Is Nothing Then
  Target.Offset(0, -1).ClearContents
  'Doppelklick abbrechen
  Cancel = True
End If

End Sub

Falls auch die Zelle I4 gelöscht werden soll, dann musst die Range auf J4 erweitern:

If Not Intersect(Target, Range("B4:J4")) Is Nothing Then

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)
Hallo M.O.

Danke, jetzt klappt es. Super.

Gruß Adde
...