Kann man in Excel bestimmte Zellen in einer Zeile leeren, wenn in einer Zelle in der selben Zeile ein "x" steht?
Ich habe eine Excel-Tabelle. In dieser möchte ich bestimmte Werte durch ein Eintragen eines "x" in der selben Zeile löschen.
Ich nenne mal ein Beispiel:
Ich trage meine Werte in die Zellen B9, C9 und D9 ein. Nun will ich die Zellen B9, C9, D9 und E9 Löschen und trage in Zeile E9 ein "x" ein. Zellen sind jetzt leer, Zeile aber noch vorhanden (wegen der Daten in Spalte A).
Dasselbe könnte ich jetzt mit einer anderen Zeile machen, z.B. 42: Ich trage meine Werte in die Zellen B42, C42 und D42 ein. Nun will ich die Zellen B42, C42, D42 und E42 Löschen und trage in Zeile E42 ein "x" ein. Zellen sind jetzt leer, Zeile aber noch vorhanden (wegen der Daten in Spalte A).
Voraussetzungen:
- Werte stehen in den Zeilen 6-155
- das eingetragene "x" soll nur die entsprechenden Inhalte der selben Zeile löschen
- Inhalte stehen in Spalten "B", "C", "D"; "x" soll eingetragen werden in Spalte "E"
- gelöscht werden soll Inhalt aus "B" bis "E"
- Löschung entweder sofort nach Eintrag des "x" oder mit Klick auf Schaltfläche
Ich würde mich sehr freuen, wenn es jemand gibt der mir ein Makro dazu schreibt. Ich habe mich mit diesem Thema noch nicht besonders anfreunden können :)
Danke schonmal im Voraus!
2 Antworten
Das geht mit VBA.
Du müsstest das Change-Event des Arbeitsblatts abfangen, schauen, ob die Änderung in Spalte E stattfand, ob die Änderung ein x ist und dann die Werte derselben Zeile löschen. Willst du das x gleich nach dem eintragen auch wieder löschen, musst du die Ereignisbehandlung kurzzeitig deaktivieren, um auszuschließen, dass das Ereignis sich nicht rekursiv selber auslöst. (Kann eigentlich in deinem Fall nicht passieren, aber hier würde ich 1000% auf Nummer sicher gehen.)
Ich verstehe allerdings nicht, wozu du so einen Aufwand betreiben willst. Markiere doch die drei Spalten, lösch sie mit der Taste Entf und gut ist. Das ist im Vergleich zum Eintragen eines x auch nicht deeer Aufwand.
Ein Makro ist mit Kanonen auf Spatzen geschossen.
Der Nachteil eines Makros ist immer, dass du die Mappe als xlsm speichern musst, bei der Ausführung die Sicherheit passend eingestellt ist und LibreOffice-Anwender in die Röhre gucken. Externe Bearbeiter des Blatts wundern sich, weshalb Werte gelöscht werden, wenn sie irgendwo etwas eintragen.
Danke schonmal! klingt sehr vielversprechend... Ich weiß das es mit ENTF wesentlich einfacher gehen würde. Mich hat nur interessiert ob das überhaupt möglich ist. Ich werde mich mit deinem Tipp im Hinterkopf mal hinsetzten und weiter probieren...
Dass das nur per VBA-Code geht, hat Suboptimierer (DH) schon erklärt und auch die Alternativen.
Da mich das interessierte habe ich mal den Code zusammengestrickt:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E6:E155")) Is Nothing Then
On Error GoTo Errorhandler
If Target.Value = "x" Then
Application.EnableEvents = False
Range(Target.Offset(0, -3), Target).ClearContents
End If
End If
Errorhandler: Application.EnableEvents = True
End Sub
Der Code gehört ins Modul des Tabellenblattes.
Klappt es? Hilft Dir das?
Der Name ist egal, der Code steht ja im Modul des Tabellenblattes und das ist der gesamte Code.
Klicke mit Rechts auf den Tabellenreiter (unten, wo z.B. Tabelle1 steht).
Dann "Code anzeigen"
In den VBA-Editor, der sich dann öffnet, kopierst Du den Code.
Sehr schön! Funktioniert problemlos.
Angenommen ich möchte jetzt noch ein Fenster öffnen lassen, auf dem ich mich entscheiden kann ob ich die Zellen wirklich löschen will, geht das auch?
Teste mal:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E6:E155")) Is Nothing Then
On Error GoTo Errorhandler
If Target.Value = "x" Then
Target.Select
If MsgBox("Werte wirklich löschen?", vbYesNo) = 6 Then
Application.EnableEvents = False
Range(Target.Offset(0, -3), Target).ClearContents
Else: Target.ClearContents
End If
End If
End If
Errorhandler: Application.EnableEvents = True
End Sub
Da sieht man halt wer Ahnung davon hat...Und wer nicht ;)
Danke für deine Hilfe!
Wenn ich mich an irgendwann mal an eine Access-Datenbank mit Rechnungsausdruck machen möchte, kommt bestimmt noch die ein oder andere Frage...
Wie muss das gesamte Modul dann aussehen, wenn das Tabellenblatt "ToDo-Liste" heißt?