Registriert seit: 13.12.2016
Version(en): 2010
Hallo, habe folgendes Problem: Ich habe eine Zelle (bspw. B3) auf einem Worksheet, in der ein Datum steht. Mit diesem Datum soll meine Zeile D14:Z14 überprüft werden. Ich möchte, wenn das Datum in einer Zelle der Zeile 14 gleich dem aus Zelle B3 ist, dass ab dieser Spalte in der nächsten Zeile, also Zeile 15 nur die Inhalte gelöscht werden. Das gleiche dann für die Zeilen 18, 21, 22, 25, 28 (nur als Beispiel) Das kombinieren dieser Funktionalitäten bekomme ich nicht gelöst. Habe schon viel gebastelt, aber alles half nicht weiter. Ich lösche wenn dann die komplette Zeile und dann auch die Datumszeile. Hier unten ist jetzt nur ein Codeschnipsel. Vielleicht kann mir jemand weiterhelfen. Danke! [Das ganze wird später noch in ein temporär erstelltes Workbook eingebunden, welches per E-Mail verschickt wird.] Code: Public Sub bedingte_Zeilenloeschung() '** Ermittlung der letzten Zeile in Spalte A
lz = Cells(Rows.Count, 4).End(xlUp).Rows.Row '** Durchlauf aller Zeilen For t = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2
'Abfragen, ob in der vierten Spalte der Buchstabe Wert aus B3 steht If Cells(t, 4).Value = Cells(3,2) Then Rows(t).Clear End If Next t
End Sub
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
Moin, ungeprüft ... Code: Public Sub bedingte_Zeilenloeschung() '** Ermittlung der letzten Zeile in Spalte A lz = Cells(Rows.Count, 4).End(xlUp).Rows.Row 'dto. Spalte lcol = Cells(1, Columns.Count).End(xlToLeft).Column '** Durchlauf aller Zeilen For t = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2 'Abfragen, ob in der vierten Spalte der Buchstabe Wert aus B3 steht If Cells(t, 4).Value = Cells(3, 2) Then Range(Cells(t + 1, 4), Cells(t + 1, lcol)).ClearContents End If Next t End Sub
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:1 Nutzer sagt Danke an GMG-CC für diesen Beitrag 28
• nedial
Registriert seit: 13.12.2016
Version(en): 2010
26.05.2017, 16:48
(Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2017, 16:48 von nedial.)
Danke für die schnelle Antwort. :19: Habe das ganze jetzt mal auf meine Tabelle angepasst...und es funktioniert Code: Public Sub bedingte_Zeilenlleerung() '** Ermittlung der letzten Zeile in Spalte F lz = Cells(Rows.Count, 6).End(xlUp).Rows.Row 'dto. Spalte rcol = Cells(13, Columns.Count).End(xlToRight).Column '** Durchlauf aller Zeilen For t = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2 'Abfragen, ob in der vierten Spalte der Buchstabe Wert aus B3 steht If Cells(t, 6).Value = Cells(3, 2) Then Range(Cells(t + 14, 7), Cells(t + 1, rcol)).ClearContents End If Next t End Sub
Jetzt fehlt mir quasi, dass anstatt alle Zeilen zu leeren, quasi immer eine Zeile erhalten bleibt und erst die nächsten beiden geleert werden. Wenn ich es manuell eingebe Code: Range(Cells(t + 14, 7).ClearContents Range(Cells(t + 16, 7).ClearContents Range(Cells(t + 17, 7).ClearContents Range(Cells(t + 19, 7).ClearContents Range(Cells(t + 20, 7).ClearContents
läuft das ganze nicht auch wenn ich Range weglasse und nur Cells nutze :20:
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
Moin, wenn du nur 1 Zelle in der nächsten zeile löschen willst, dann reicht Cells(x, y).ClearContents. Ich hatte das so verstanden, dass da noch einige Spalten folgen, die auch geleert werden sollen Die andere Frage Zitat:Jetzt fehlt mir quasi, dass anstatt alle Zeilen zu leeren, quasi immer eine Zeile erhalten bleibt und erst die nächsten beiden geleert werden. habe ich trotz des Beispiels nicht verstanden/nachvollziehen können.
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 13.12.2016
Version(en): 2010
26.05.2017, 17:12
(Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2017, 17:13 von nedial.)
Servus,
ich möchte, dass Zeile 15 erhalten bleibt,
Zeile 16 und 17 sollen geleert werden.
Zeile 18 soll erhalten bleiben.
Zeile 19 und 20 sollen geleert werden.
Dieses Vorgehen soll dynamisch fortgeführt werden bis zur letzten beschrifteten Zeile.
Vielleicht versteht man es so besser.
Danke für die Hilfe!
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
OK, das habe ich jetzt verstanden. Und wenn in Zeile_14 und Zeile_15 das gesuchte Datum steht ... ? Im Prinzip so: Code: Range(Cells(t + 1, 7), Cells(t+2, 7)).ClearContents
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 13.12.2016
Version(en): 2010
26.05.2017, 21:42
(Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2017, 21:42 von nedial.)
Ich hatte einen Denkfehler. Entschuldigung
Im Prinzip prüfe ich nur in einer festen Zeile (Zeile 13) das Datum. Das habe ich auch im Code falsch.
Datum in Zeile 13 von Spalte F an soll mit Datum aus Zelle B3 verglichen werden.
Es ist also garnicht nötig alle Zeilen danach abzusuchen, sondern nur diese eine.
Stimmt das Datum in einer Zelle der Zeile mit dem aus B3 überein, sollen ab dort die Spalten meiner gewünschten Zeilen nacht rechts geleert werden.
Grüße und Danke für die Hilfe!
Registriert seit: 13.12.2016
Version(en): 2010
27.05.2017, 11:05
(Dieser Beitrag wurde zuletzt bearbeitet: 27.05.2017, 11:06 von nedial.)
Sorry für den Doublepost Code: Public Sub bedingte_Zeilenlleerung()
lz = Cells(Rows.Count, 6).End(xlUp).Rows.Row 'dto. Spalte rcol = Cells(13, Columns.Count).End(xlToRight).Column
For t = lz To 13 Step -1 'Zählung rückwärts der Zeile 13 'Abfragen, ob in der vierten Spalte der Buchstabe Wert aus B3 steht If Cells(t, 6).Value = Cells(3, 2) Then 'Range(Cells(t + 14, 7), Cells(t + 1, rcol)).ClearContents Range(Cells(t + 1, 7), Cells(t + 1, rcol)).ClearContents Range(Cells(t + 3, 7), Cells(t + 3, rcol)).ClearContents Range(Cells(t + 4, 7), Cells(t + 4, rcol)).ClearContents Range(Cells(t + 6, 7), Cells(t + 6, rcol)).ClearContents End If Next t End Sub
Es wird nur die Spalte 6 auf das Datum geprüft wird, es sollen aber alle Spalten ab dieser Spalte geprüft werden. Mit zwei Variablen klappt es bei mir nicht. Grüße
|