Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 14:18:05
28.04.2024 13:43:14
Anzeige
Archiv - Navigation
1896to1900
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
01.09.2022 20:02:16
Heinz-Dieter
Hallo Forum,
Ende Juni hat mir Daniel hier bei einem Problem super geholfen.
Mit folgendem Code kann ich nun meine Auftragsnummern (Werkstattarbeit = Nr. / Montage = Nr.+m)
in meinem Fertigungsterminplan finden und bei Bedarf den Auftrag incl. der hinterlegten Zeiten löschen.

Sub Zeiten_löschen()
'hier werden die Auftragsnummern und die zugehörigen Zeiten gelöscht
Dim DatAnfang As Date
DatAnfang = Now
If Worksheets("Berechnungen").Range("B2").Value = "" Then 'wenn kein Auftrag ausgewählt ist, bleibt die Zelle B2 leer - nicht "0"!
MsgBox "keine Auftrag zum Löschen ausgewählt"
Exit Sub
End If
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:="xxx"
Application.Goto Reference:="Personal_Farben"
'alle Zellen mit der Auftragsnummer (Werkstattarbeit) suchen und löschen
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
'alle Zellen mit der Auftragsnummer (Montage = Auftragsnummer + "m") suchen und löschen
Selection.Replace What:=Sheets("Berechnungen").Range("B5").Value, Replacement:=True, LookAt:=xlWhole
Selection.SpecialCells(xlCellTypeConstants, 4).Offset(1, 0).ClearContents
Selection.SpecialCells(xlCellTypeConstants, 4).ClearContents
ActiveSheet.Protect Password:="xxx"
Application.ScreenUpdating = True
End Sub
Funktioniert bis jetzt super, aber .... heute wollte ich das erste mal einen Auftrag löschen, bei dem
nur Werkstattarbeit (Nr.) aber keine Montage (Nr.+m) eingetragen ist.
In der Zeile "Selection.SpecialCells(xlCellTypeConstants, 4).Offset(1, 0).ClearContents" bekomme ich dann
jedoch den Laufzeitfehler 1004 "Keine Zellen gefunden"!
Wie kann ich diesen Fehler abfangen?
Danke für eure Hilfe und Unterstützung.
Gruß
Dieter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellinhalt eine Zeile tiefer löschen
01.09.2022 20:34:43
Heinz-Dieter
Hallo Forum,
ich habe mal selbst etwas probiert ....

Sub Zeiten_löschen()
'hier werden die Auftragsnummern und die zugehörigen Zeiten gelöscht
Dim DatAnfang As Date
DatAnfang = Now
If Worksheets("Berechnungen").Range("B2").Value = "" Then 'wenn kein Auftrag ausgewählt ist, bleibt die Zelle B2 leer - nicht "0"!
MsgBox "keine Auftrag zum Löschen ausgewählt"
Exit Sub
End If
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:="1"
Application.Goto Reference:="Personal_Farben"
'alle Zellen mit der Auftragsnummer (Werkstattarbeit) suchen und löschen
On Error GoTo FEHLERMELDUNG
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
'alle Zellen mit der Auftragsnummer (Montage = Auftragsnummer + "m") suchen und löschen
Selection.Replace What:=Sheets("Berechnungen").Range("B5").Value, Replacement:=True, LookAt:=xlWhole
Selection.SpecialCells(xlCellTypeConstants, 4).Offset(1, 0).ClearContents
Selection.SpecialCells(xlCellTypeConstants, 4).ClearContents
ActiveSheet.Protect Password:="1"
Application.ScreenUpdating = True
FEHLERMELDUNG: Exit Sub
End Sub
.... so scheint es zumindest zu funktionieren.
Vielleicht hat ja noch jemand eine elegantere Lösung.
Gruß
Dieter
Anzeige
AW: Zellinhalt eine Zeile tiefer löschen
01.09.2022 21:11:15
ralf_b
wenns funktioniert, mach es so.
Ich habe mich mal dran versucht. Hoffe du verstehst was und vielleicht auch warum ich was geändert habe.

Sub Zeiten_löschen()
'hier werden die Auftragsnummern und die zugehörigen Zeiten gelöscht
Dim DatAnfang As Date
DatAnfang = Now
If Worksheets("Berechnungen").Range("B2").Value = "" Then 'wenn kein Auftrag ausgewählt ist, bleibt die Zelle B2 leer - nicht "0"!
MsgBox "keine Auftrag zum Löschen ausgewählt"
Exit Sub
End If
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:="xxx"
Application.Goto Reference:="Personal_Farben"
'alle Zellen mit der Auftragsnummer (Werkstattarbeit) suchen und löschen
If Sheets("Berechnungen").Range("B4").Value  "" Then
Selection.Replace What:=Sheets("Berechnungen").Range("B4").Value, Replacement:=True, LookAt:=xlWhole
If Not Selection.SpecialCells(xlCellTypeConstants, 4) Is Nothing Then
Selection.SpecialCells(xlCellTypeConstants, 4).Resize(2).ClearContents
End If
End If
'alle Zellen mit der Auftragsnummer (Montage = Auftragsnummer + "m") suchen und löschen
If Sheets("Berechnungen").Range("B5").Value  "" Then
Selection.Replace What:=Sheets("Berechnungen").Range("B5").Value, Replacement:=True, LookAt:=xlWhole
If Not Selection.SpecialCells(xlCellTypeConstants, 4) Is Nothing Then
Selection.SpecialCells(xlCellTypeConstants, 4).Resize(2).ClearContents
End If
End If
ActiveSheet.Protect Password:="xxx"
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Zellinhalt eine Zeile tiefer löschen
01.09.2022 21:42:05
Heinz-Dieter
Hallo Ralf,
Danke für Deine Unterstützung.
Aktuell meckert der Kompiler aber trotzdem mit der selben Fehlermeldung in der Zeile:
'alle Zellen mit der Auftragsnummer (Montage = Auftragsnummer + "m") suchen und löschen
If Sheets("Berechnungen").Range("B5").Value "" Then
Selection.Replace What:=Sheets("Berechnungen").Range("B5").Value, Replacement:=True, LookAt:=xlWhole
If Not Selection.SpecialCells(xlCellTypeConstants, 4) Is Nothing Then
Selection.SpecialCells(xlCellTypeConstants, 4).Resize(2).ClearContents
End If
End If
Wenn ich Deine Zeile ändere:
von
Selection.SpecialCells(xlCellTypeConstants, 4).Resize(2).ClearContents
auf
Selection.SpecialCells(xlCellTypeConstants, 4).Offset(1, 0).ClearContents
bekomme ich keine Fehlermeldung mehr. Die Zellinhalte werden dann jedoch nicht gelöscht,
sondern mit dem Wert "WAHR" überschrieben.
Ich probiere mal noch weiter, vielleicht komme ich ja dahinter ....
Danke
Gruß
Dieter
Anzeige
AW: Zellinhalt eine Zeile tiefer löschen
01.09.2022 21:56:31
ralf_b
is nur ein Versuch, der ohne eine Testdatei erstellt wurde.
Mein Gedanke war das wenn Specialcells kein Ergebnis liefert, ein Nothing zurückgegeben wird. Das wollte ich damit prüfen. Aber wahrscheinlich habe ich da noch was übersehen.
Das mit dem Resize kannst du auch weglassen und die beiden ursprünglichen Zeilen dafür verwenden.
AW: Zellinhalt eine Zeile tiefer löschen
01.09.2022 22:05:18
Heinz-Dieter
Hallo Ralf,
alles gut ... ich Danke Dir vielmals für Deine Hilfe.
Nur durch solche Antworten lerne ich dazu.
Ich werde die nächsten Tage mal etwas weiter experimentieren und eine
ggf. gefundene Lösung hier posten.
Gruß
Dieter
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige