Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
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

Zellinhalt eine Zeile tiefer löschen

Zellinhalt eine Zeile tiefer löschen
27.06.2022 21:28:00
Heinz-Dieter
Hallo Forum,
ich war schon sehr lange nicht mehr hier und hoffe mir kann / möchte trotzdem
jemand weiterhelfen.
In einem festgelegten Bereich (z.B. H4:V22) suche ich in jeder 2. Zeile eine eingetragene
Auftragsnummer (1-40). Wenn diese Auftragsnummer gefunden wird, wird der Inhalt
der Zelle gelöscht. Klappt einwandfrei.
Ich möchte aber zusätzlich den Inhalt in der darunterliegenden Zelle (Arbeitsstunden) ebenfalls löschen.
Beispiel: Auftragsnummer "1" wird in den Zellen H4, L8, O18 und R22 gefunden.
Der Inhalt "die Auftragsnummer" wird gelöscht. Jetzt möchte ich jeweils den Inhalt unterhalb der Fundzelle
z.B. H5, L9, O19 und R23 ebenfalls löschen. Das bekomme ich einfach nicht hin ....
Mit folgendem Code (irgendwann im Forum gefunden) suche ich in einem Bereich einen Wert
und lösche den Zellinhalt jeder Fundstelle:

Sub Zeiten_löschen()
Dim DatAnfang As Date
DatAnfang = Now
If Worksheets("Berechnungen").Range("B2").Value = "" Then
Exit Sub
End If
Application.Goto Reference:="Auftrag_Nummer"
Selection.Replace what:=Sheets("Berechnungen").Range("B4").Value, Replacement:="", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Kann mich bitte jemand "anschubsen"?
Danke
Gruß
Dieter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellinhalt eine Zeile tiefer löschen
27.06.2022 23:17:24
Daniel
Hi
Probiers mal so:
1. ersetze die Nummer nicht durch "", sondern durch TRUE
2. diese Wahrheitswerte kannst du gezielt selektieren mit Selection.SpecialCells(xlcelltypeconstants, 4).select
3. wenn du diese Selektion hast, kannst du sie mit .Offset(1, 0) um eine Zeile verschieben, um dann diese Zellen zuerst zu löschen:

Sub Zeiten_löschen()
Dim DatAnfang As Date
DatAnfang = Now
If Worksheets("Berechnungen").Range("B2").Value = "" Then Exit Sub
Application.Goto Reference:="Auftrag_Nummer"
If Worksheetfunction.CountIf(Selection, Worksheets("Berechnungen").Range("B4").Value) = 0 then Exit Sub
Selection.Replace what:=Sheets("Berechnungen").Range("B4").Value, Replacement:=True, LookAt:=xlWhole
Selection.Specialcells(xlcelltypeconstants, 4).offset(1, 0).ClearContents
Selection.Specialcells(xlcelltypeconstants, 4).ClearContents
End Sub
Gruß Daniel
Anzeige
AW: Zellinhalt eine Zeile tiefer löschen
27.06.2022 23:34:53
Heinz-Dieter
Hallo Daniel,
vielen Dank für Deine Hilfe.
Aktuell meckert das Makro mit dem Hinweis
Laufzeitfehler 1004:
Die CountIf-Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden.
Ich probiere mal ein bischen ... nach der Fehlermeldung werde ich mal suchen.
Gruß
Dieter
AW: Zellinhalt eine Zeile tiefer löschen
27.06.2022 23:47:05
Heinz-Dieter
Hallo Daniel,
wenn ich wieder meinen Abbruch ins Makro einfüge dann läuft es!
Es wird wie gewünscht auch der darunterliegende Zellinhalt gelöscht.
Es "kneift" also irgendwo bei "WorksheetFunctionIf" .... (auch wenn ich den Zellwert statt "0" als "" abfrage)
Egal, jetzt kann ich mal etwas probieren ...
So läuft es:

Sub Zeiten_löschen()
Dim DatAnfang As Date
DatAnfang = Now
If Worksheets("Berechnungen").Range("B2").Value = "" Then Exit Sub
Application.Goto Reference:="Auftrag_Nummer"
If Worksheets("Berechnungen").Range("B2").Value = "" Then 'wenn kein Auftrag ausgewählt ist, bleibt die Zelle B2 leer - nicht "0"!
Exit Sub
End If
Selection.Replace what:=Sheets("Berechnungen").Range("B4").Value, Replacement:=True, LookAt:=xlWhole
Selection.SpecialCells(xlCellTypeConstants, 4).Offset(1, 0).ClearContents
Selection.SpecialCells(xlCellTypeConstants, 4).ClearContents
End 

Sub
Du hast mir auf jeden Fall sehr viel weitergeholfen.
Besten Dank
Gruß
Dieter

Anzeige
AW: Zellinhalt eine Zeile tiefer löschen
28.06.2022 10:14:03
Daniel
Hi
das mit dem CountIF sollte nur die Abfrage sein, ob der Suchbegriff auch in der Liste vorkommt, weil das SpecialCells mit einem Fehlerabbruch reagiert, wenn es keine Zellen findet.
aber lass das mal, besser ist die Prüfung dann nach dem Replace zu machen mit

Selection.Replace what:=Sheets("Berechnungen").Range("B4").Value, Replacement:=True, LookAt:=xlWhole
if Worksheetfunction.CountIf(Selection, True) then
Selection.SpecialCells(xlCellTypeConstants, 4).Offset(1, 0).ClearContents
Selection.SpecialCells(xlCellTypeConstants, 4).ClearContents
End if
Gruß Daniel
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige