Zelle löschen, in dem Makro ausgeführt wird

Hallo,
habe eine Frage bzgl. Makros in Excel.
Ich habe einer Tabelle eine Spalte hinzugefügt, in der ich eine WENN-Funktion eingebaut habe. Diese soll, wenn zwei Kriterien zutreffen, den Buchstaben A eintragen. Treffen diese nicht zu soll die gesamte Zelle gelöscht werden, inclusive Formel (wichtig für die Auswertung mit Pivottabelle)! Nun denke ich, dass ich dafür ein Makro brauche, der mir die Zelle löscht. Allerdings wäre dabei für mich wichtig, dass das Makro dies universal macht. Daher soll genau die Zelle, in welcher das Makro steht, gelöscht werden. Ich möchte im Quelltext nicht extra für jede Zeile die Zelle die Nummerierung angeben müssen (zb. A1, U6, E5…).
Hoffe das ich mein Problem ausreichend verständlich erklären konnte und freue mich auf gute Lösungsvorschläge!
Danke.

Gruß
Michael

Hallo Michael,

Wie sieht denn dein Makro aus? Hat du schon etwas zusammmengestellt bzw. mit dem Makro Rekorder aufgezeichnet?
Natürlich gäb es da ein einfachere Lösung, da musst du nicht alle Zellen im Quelltext reinschreiben. Dafür müsste man eine Schleife verwenden.
Jetzt wäre es interessant zu wissen was du überprüfst ( also welche Spalten in der jeweiligen Zeile).
Sind es immer dieselben Spalten , so dass sich nur von Zeile zu Zeile springt? Zum Beispiel immer von Spalte D bis G, D1 bis G1 und dann D2 bis G2 usw…
Da kann man dann jede Zeile ( mithilfe der Schleife ) durchlaufen und dass dann kontrollieren mit der if funktion und in die bestimmte eine Zelle den Wert A reinschreiben oder das andere löschen.
Schreib mir doch dein Code, dann könnt ich dir weiterhelfen.

MFG

Hallo enesc,
danke für die schnelle Antwort.
Ich versuch mein Problem nocheinmal genauer zu beschreiben :wink:
Wie gesagt habe ich eine neue Spalte erstellt, welche sich mit Hilfe einer WENN-Funktion aus zwei vorhergehenden Spalten zusammensetzt und dies folgendermaßen auswerten soll:
Sind beide Kriterien wahr, soll in das jeweilige Feld der Buchstabe A eigesetzt werden.
Ist eine, bzw. beide falsch, soll der gesamte Inhalt der Zelle (auch die Formel, da ich diese Spalte später in einer Pivottabelle auswerten möchte und nach Anzahl der „gefüllten“ Felder sortieren möchte) gelöscht werden.
Ob dabei ein Makro verwendet wird ist mir hierbei egal. Wenn es dafür eine andere Möglichkeit gibt wäre auch super!
Ich hoffe diesmal war es leichter verständlich.
Danke!

soll die gesamte Zelle gelöscht werden, inclusive
Formel (wichtig für die Auswertung mit Pivottabelle)!

Hallo Michael,

was du vorhast klingt etwas abenteuerlich.
Warum muss die Zelle gelöscht werden, und nicht nur ihr Inhalt?
Wenn du eine einzelne Zelle löschst, rückt eine benachbarte Zelle an diese Stelle. Es gibt ja keine Löcher in einer Excel-Tabelle.
Wenn du aber den Inhalt der Zelle einschließlich des Makros löschst, steht das Makro danach ja für keine weiteren Aufgaben zu Verfügung.
Außerdem kann ein Makro sich nicht selbst löschen.
Warum kann im Falle eines „falsch“ in der Wenn-Funktion der angezeigte Inhalt nicht einfach leer bleiben? Beim Löschen der Zelle würde ja auch eine leere Zelle nachrücken.

Sicher gibt es aber eine bessere Lösung für dein Problem.
Dazu müsste ich aber deine Excel-Tabelle besser kennen, und was du damit vor hast.

Mit freundlichem Gruß

Johannes E.

Hallo Johannes,

was du eben beschrieben hast, habe ich bereits versucht :wink:
Mein Problem ist, wenn ich die Spalte in einer Pivottabelle auswerten möchte und nach Anzahl sortiere, werden dort nicht die Anzahl der A’s angezeigt sonder alle Zellen, da in den Zellen mit blanco immer noch die Formel hinterlegt ist.
Deshalb müsste der gesamte Inhalt aus der Zelle gelöscht werden.
War vielleicht ein bisschen unglücklich formuliert!

Hallo,

dann mußt du einen Loop über alle Zellen machen und darin die Abfrage integrieren,

Gruß

Hallo Michael,

Formel (wichtig für die Auswertung mit Pivottabelle)! Nun

Mit „Pivottabelle“ hab ich keine Erfahrung

Dein Problem läst sich lösen.

das Ganze in einer If Bedienung einbauen.
z.b.

 if Cells(Target.Row, Target.Column)
 'kannst die Aktive Zelle abfragen

 'Denn zulöschenden Teil Einfach mit Makro Recorder aufzeichnen.
 end if

Gruß
Fred

Hallo Michael,
ich bin kein Programmierer und kann daher auch mit einem Makro nicht helfen.
Ich würde es auch nicht mit einem MAcro lösen. Die Wennabfrage liefert den entsprechenden Status. Danach mit Autofilter die die Zeilen filtern, dann sichtbare Zeilen markieren, Taste Entfernen drücken - und das wars.
Beste GRüße
Helmut Schuster

Hallo Michael,

mit Makros kenne ich mich (noch) nicht so gut aus.

Tut mir Leid.

Hallo Michael,

Über [alt] + [F11] gelangst du in den VBA editor.

Dort „einfügen“ -> Modul und da den code rein:

Sub KontrollMakro()

Dim i As Integer
Dim endzeile As Integer
endzeile = 30 'ist die letzte zeile, die überprüft wird

For i = 1 To endzeile 'Läuft alle Zeilen von 1 bis endzeile ab
'Hier kommen jetzt die Zwei Kontrollzeilen mit den jeweiligen Kontrollwerten
If Sheets(1).Cells(i, „F“).Value = „Kontrollwert1“ And Sheets(1).Cells(i, „G“).Value = „Kontrollwert2“ Then
Sheets(1).Cells(i, „H“).Value = „A“
Else
Sheets(1).Cells(i, „H“).Value = „“
End If
Next i
End Sub

Das müsstest du dann nur noch an deine Zellen anpassen.

cells(Zeilennummer, „Spaltenbuchstabe“/spaltennummer).value = „Wert“

makro starten über „Makros“ -> Ausführen oder aus dem Editor mit [F5]

Bei fragen, einfach noch mal schreiben
Wenns klappt, bitte rückmeldung

danke
OVM

Anmerkung:

Die wenn Funktion brauvhst du dann nicht mehr in deiner Zeile.

Lg OVM

Im Endeffekt werde ich das nun machen. Ist, obwohl es umständlich ist, immer noch die beste Lösung.
Danke an alle für eure Vorschläge!

Hallo MichaelEF,

da fehlen einige Dinge. Sonst wüste ich nicht wie ich helfen kann.

  • An welchen Stellen (z.B. A1 und C1) werden die Kriterien geprüft?
  • Sind die Kriterien in einer Zelle? wenn nicht welche Zelle soll gelöscht werden?
  • steht in allen Zellen ein macro?
    Noch habe ich erkennen könne was Sie wollen.

Gruß Hugo

Hallo,
tut mir leid, bei VBA-Programmierungen kann ich nicht helfen.
Gruß
Sabine

Hallo Michael,

vielleicht hilft dir ja folgendes:
du hast in deiner Tabelle eine Spalte, welche dir den Wert „A“ oder leer ausgibt.
Ich glaube das Problem ist der Buchstabe.
Wenn du eine weitere Spalte deiner Tabelle hinzufügst, eine „Hilfsspalte“ sozusagen, in welcher du den Buchstaben in eine Zahl umwandelst [=wenn(‚SpalteF‘=„A“;1;"")] und diese Spalte mit in das Pivottable einbeziehst, kannst du die Anzahl sicher ermitteln (Filtereinstellung auf 1 und er zeigt in der Summe die Anzahl der Zeilen mit der 1 an.)

Schriftfarbe der Hilfsspalte in weiß und die Zahlen verwirren oder stören dein Bild nicht.

Da ich deine Tabelle ja nicht kenne, weiß ich nicht ob das bei dir klappen kann. Versuchs halt.

Beste Grüße
Johannes E

zur zeit kann ich leider nicht behilflich sein

Hallo Michael,

hier ein entsprechendes Makro.

Die Spalte mit dem Früfkriterium und ggf. die Zeile ab der das Makro prüfen soll muss du noch anpassen.

Gruß
Franz

Sub Zeilen\_loeschen()
 'Löscht Zeilen mit Mehrfacheinträgen in Spalte B der aktiven Tabelle
 Dim objRng As Range, objCell As Range, wks As Worksheet
 Dim boolLoeschen As Boolean, StatusCalc As Long
 Set wks = ActiveSheet
 With wks
 'Bereich, der geprüft werden soll = Zellbereich mit der WENN-Formel
 'hier im Beispiel Spalte 6 (F)
 Set objRng = .Range(.Cells(2, 6), .Cells(.Rows.Count, 6).End(xlUp))
 'Makrobremsen deaktivieren
 With Application
 .ScreenUpdating = False
 StatusCalc = .Calculation
 .Calculation = xlCalculationManual
 .EnableEvents = False
 End With
 .Calculate
 'Inhalte in den Zeilen, die nicht dem Prüfkriterium entsprechen, löschen
 For Each objCell In objRng.Cells
 If objCell.Value "A" Then
 .Rows(objCell.Row).ClearContents
 boolLoeschen = True
 End If
 Next
 'Zeilen mit gelöschten Inhalten löschen
 If boolLoeschen = True Then objRng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 'Makrobremsen zurücksetzen
 With Application
 .ScreenUpdating = True
 .Calculation = StatusCalc
 .EnableEvents = True
 End With
 End With
End Sub