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

Zellinhalte per VBA löschen

Zellinhalte per VBA löschen
19.01.2019 14:06:56
Fritz
Hallo Forumsbesucher,
bitte um eure Hilfe in folgender Angelegenheit:
Ich möchte im Tabellenblatt "Januar" den Zellinhalt aller Zellen der Spalten A bis S in der Zeile löschen, in der in der Spalte A der höchste Zahlenwert steht.
Für eure Bemühungen besten Dank im Voraus.
mfg
Fritz

39
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellinhalte per VBA löschen
19.01.2019 14:27:39
Beverly
Hi Fritz,
Sub Loeschen()
Dim lngZeile As Long
With Worksheets("Januar")
lngZeile = Application.Max(.Columns(1))
.Range(.Cells(1, 1), Cells(lngZeile, 19)).ClearContents
End With
End Sub


AW: Zellinhalte per VBA löschen
19.01.2019 14:41:35
Fritz
Hallo Karin,
vielen Dank für Deine Unterstützung.
Hab dein Makro getestet mit folgendem Ergebnis:
Es werden alle Zeilen bis zur Zeile mit dem höchsten Zahlenwert gelöscht, ich will aber dass die Zellinhalte der Zellen der Spalte A bis S der Zeile gelöscht werden, in der in Spalte A der höchste Zahlenwert steht (da die Zahlen fortlaufend erhöht werden, ist dies gleichzusetzen mit der letzten Zeile in Spalte A, die einen Zahlenwert enthält.
Freue mich, wenn Du das entsprechend anpassen könntest.
mfg
Fritz
Anzeige
AW: Zellinhalte per VBA löschen
19.01.2019 15:05:01
Beverly
Hi Fritz,
es sollen also nur die Zellinhalte der Zellen in der Zeile mit dem höchsten Wert gelöscht werden? Dann ändere .Cells(1, 1) in .Cells(lngZeile, 1)


AW: Zellinhalte per VBA löschen
19.01.2019 15:23:56
Fritz
Hallo Karin,
jetzt wird der Zellbereich der Zeile unmittelbar über der Zeile mit der höchsten Zahl in Spalte A gelöscht.
mfg
Fritz
AW: Zellinhalte per VBA löschen
20.01.2019 10:08:21
Beverly
Hi Fritz,
dann hast du einen anderen Tabellenaufbau als ich.
Ändere diese Zeile:
lngZeile = Application.Match(Application.Max(.Columns(1)), .Columns(1), 0)



Anzeige
AW: Zellinhalte per VBA löschen
20.01.2019 14:48:23
Fritz
Hallo Karin,
so funktioniert das Makro wie gewünscht (falls aus dem Tabellenblatt "Januar" gestartet).
Zu deiner Vermutung bezüglich eines anderen Tabellenaufbaus: Meine Tabelle weist in der ersten Zeile Spaltenüberschriften auf, so dass in Zelle A1 keine Zahl sondern ein Text steht. Möglicherweise waren die Probleme des vorigen Codes darin begründet.
Nochmals Dank und viele Grüße
Fritz
Das Makro kannst du starten...
20.01.2019 15:09:24
Beverly
Hi Fritz,
...aus jedem Tabellenblatt, nicht nur aus "Januar" - wenn du damit meinst, dass dieses Blatt aktiv sein muss. Gleichgültig welches Blatt aktiv ist, das Makro wird immer IM Tabellenblatt "Januar" ausgeführt durch die With-Anweisung, in welcher der Bezug zum Tabellenblatt "Januar" festgelegt ist.


Anzeige
Danke Karin o.w.T
20.01.2019 20:04:55
Fritz
.
AW: Zellinhalte per VBA löschen
19.01.2019 14:28:14
Hajo_Zi
Halo Fritz,
benutze Autofilter und lösche den sichtbaren Bereich unter Überschrift.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Zellinhalte per VBA löschen
19.01.2019 14:44:04
Fritz
Hallo Hajo,
auch Dir danke für Deine Unterstützung.
Ich bevorzuge in diesem Fall aber die VBA-Lösung.
mfg
Fritz
AW: Zellinhalte per VBA löschen
19.01.2019 14:56:53
Hajo_Zi
Hallo Fritz,
Makrorecorder ist Dir unbekannt?
Gruß Hajo
AW: Zellinhalte per VBA löschen
19.01.2019 15:03:06
Fritz
Hallo Hajo,
Makrorecorder kenn ich schon, nach meinem Kenntnisstand kann ich in aber in diesem Fall nicht gebrauchen.
Die Zelle (= Zeile) mit der höchsten Zahl in Spalte A ist nicht immer dieselbe, daher hilft mir der Makrorecorder in diesem Fall nicht.
mfg
Fritz
Anzeige
AW: Zellinhalte per VBA löschen
19.01.2019 15:06:09
onur

Dim lngZeile, cell
With Worksheets("Januar")
lngZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
.Range(.Cells(1, 1), .Cells(lngZeile, 19)).Select
For Each cell In .Range(.Cells(1, 1), .Cells(lngZeile, 19))
If WorksheetFunction.Max(.Range("A:A")) = cell Then Rows(cell.Row).ClearContents
Next
End With

AW: Zellinhalte per VBA löschen
19.01.2019 15:17:20
Fritz
Hallo Onur,
vielen Dank, das funktioniert.
Ich muss allerdings den Code aus dem Tabellenblatt "Januar" aufrufen.
Ich würde gerne das Makro auch aus einem anderen Tabellenblatt ausführen können.
Wäre nett, wenn man das noch entsprechend ändern könnte.
mfg Fritz
Anzeige
AW: Zellinhalte per VBA löschen
19.01.2019 15:19:31
onur
Kannst du doch - DESWEGEN steht im Code:
With Worksheets("Januar")

oder meintest du FÜR ein anderes Blatt?
AW: Zellinhalte per VBA löschen
19.01.2019 15:28:00
Fritz
Hallo Onur,
es kommt die Fehlermeldung: Laufzeitfehler 1004: Die Select Methode des Range Objekts konnte nicht ausgeführt werden.
mfg
Fritz
AW: Zellinhalte per VBA löschen
19.01.2019 15:29:16
onur
lösche die Zeile, ist nur Restmüll
AW: Zellinhalte per VBA löschen
19.01.2019 15:45:16
Fritz
Hallo Onur,
entschuldige, dass ich nachfrage, aber ich verstehe nicht, was Du mit Zeile meinst.
mfg
Fritz
AW: Zellinhalte per VBA löschen
19.01.2019 15:47:25
onur
Die Zeile mit der Fehlermeldung.
DAS ist der richtige Code:
Dim lngZeile, cell
With Worksheets("Januar")
lngZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For Each cell In .Range(.Cells(1, 1), .Cells(lngZeile, 19))
If WorksheetFunction.Max(.Range("A:A")) = cell Then Rows(cell.Row).ClearContents
Next
End With

Anzeige
AW: Zellinhalte per VBA löschen
19.01.2019 15:53:27
Fritz
Hallo Onur,
wenn ich das Makro jetzt aus einem anderen Tabellenblatt starte, unterbleibt zwar die Fehlermeldung, die Zeile wird jedoch nicht gelöscht. Aus dem Tabellenblatt "Januar" gestartet, funktioniert es aber.
mfg
Fritz
AW: Zellinhalte per VBA löschen
19.01.2019 15:55:07
onur
MEIN Fehler, sorry,
Dim lngZeile, cell
With Worksheets("Januar")
lngZeile = .Cells(Rows.Count, 2).End(xlUp).Row
For Each cell In .Range(.Cells(1, 1), .Cells(lngZeile, 19))
If WorksheetFunction.Max(.Range("A:A")) = cell Then Rows(cell.Row).ClearContents
Next
End With

AW: Zellinhalte per VBA löschen
19.01.2019 16:03:04
Fritz
Hallo Onur,
leider funktioniert es immer noch nicht. Die gleiche Reaktion wie beim vorherigen Code.
mfg
Fritz
Anzeige
AW: Zellinhalte per VBA löschen
19.01.2019 16:05:00
onur
Ich habe den Code endlich mal getestet und es selber gemerkt.
Merke: Nix posten, was du nicht getestet hast. :)
Sorry.
Dim lngZeile, cell
With Worksheets("Januar")
lngZeile = .Cells(.Rows.Count, 2).End(xlUp).Row
For Each cell In .Range(.Cells(1, 1), .Cells(lngZeile, 19))
If WorksheetFunction.Max(.Range("A:A")) = cell Then .Rows(cell.Row).ClearContents
Next
End With

AW: Zellinhalte per VBA löschen
19.01.2019 16:20:28
Daniel
wo bei du auch das nicht wirklich getestet hast.
du solltest bedenken, dass nach löschen des größten Wertes der zweitgrößte Wert zum größten Wert wird.
wenn die Tabelle bspw nach der Spalte A absteigend sortiert ist, löschst du damit alle Zeilen.
wenn dann so:
Sub test()
Dim mx As Double, cell
With Worksheets(1)
mx = WorksheetFunction.Max(.Columns(1))
For Each cell In .Range(.Cells(1, 1), .Cells(1, .Rows.Count).End(xlUp))
If cell.Value = mx Then cell.Resize(1, 19).ClearContents
Next
End With
End Sub
Gruß Daniel
Anzeige
AW: Zellinhalte per VBA löschen
19.01.2019 16:25:59
Fritz
Hallo Daniel,
wird ich gleich testen, auch Dir vielen Dank
mfg
Fritz
AW: Zellinhalte per VBA löschen
19.01.2019 16:52:09
Fritz
Hallo Daniel,
das Makro funktioniert so bei mir leider nicht, jedoch nicht weiter schlimm, das andere Makro hingegen funktioniert einwandfrei.
Danke.
mfg
Fritz
AW: Zellinhalte per VBA löschen
19.01.2019 17:14:08
Daniel
naja "funktioniert so nicht" ist als Rückantwort nicht besonders aussagekräftig (irgendjemand hat das mal "Ohrfeige für den Helfer bezeichnet).
du könntest (ich hoffe du kannst) zumindest mitteilen, wie sich dieses "funktioniert nicht" bemerkbar macht.
Gibt es eine Fehlermeldung, wenn ja, welche und in welcher Zeile tritt sie auf?
wenn nein, was passiert denn?
wenn das falsche Tabellenblatt gelöscht wird, dann hast du beim WITH vielleicht nicht den richtigen Tabellenblattnamen eingetragen?
Gruß Daniel
Anzeige
AW: Zellinhalte per VBA löschen
19.01.2019 17:31:31
Fritz
Hallo Daniel,
bitte um Entschuldigung, mir liegt es fern, die Leistung von euch großartigen Helfern nicht zu schätzen.
Folgende Fehlermeldung: Laufzeitfehler 1004 (Anwendungs- oder objektorientierter Fehler)
und die Zeile die mit "For each …" beginnt wird gelb markiert.
Nochmals vielen Dank.
P.S. Kann heute nicht mehr antworten, da ich gleich weg muss.
mfg
Fritz
AW: Zellinhalte per VBA löschen
19.01.2019 17:52:19
Daniel
dann tausch mal die Parameter in Cells und schreibe .Cells(.Rows.count, 1)
Gruß Daniel
Geändert und getestet
20.01.2019 10:38:24
Fritz
Hallo Daniel,
ich habe im Code ".Cells(1, Rows.Count)" durch ".Cells(1, Rows.Count, 1)" ersetzt und erhalte beim Test folgende Fehlermeldung:
Laufzeitfehle '450': Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft
mfg
Fritz
AW: Geändert und getestet
20.01.2019 22:06:33
Daniel
Ich: .Cells(.Rows.count, 1)
Du: .Cells(1, Rows.Count, 1)
Fällt dir da nix auf?
AW: Geändert und getestet
21.01.2019 16:48:22
Fritz
Hallo Daniel,
jetzt (leider erst nach deinem Hinweis) fehlt mir mein Fehler auf.
Bitte um Nachsicht.
Nochmals Danke für Deine Hilfe.
mfg
Fritz
AW: Zellinhalte per VBA löschen
19.01.2019 16:23:46
Fritz
Hallo Onur,
funktioniert, vielen Dank (auch für Deine Geduld)
mfg
Fritz
AW: Zellinhalte per VBA löschen
19.01.2019 16:37:37
onur
Daniel hat Recht,
Wenn die Zahlen sortiert sind, gibts Probleme.
Nimm das:
Dim lngZeile, cell, mx
With Worksheets("Januar")
mx = WorksheetFunction.Max(.Range("A:A"))
For Each cell In .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1))
If mx = cell.Value Then .Rows(cell.Row).ClearContents
Next
End With

Vielen Dank Onur owT
19.01.2019 16:53:07
Fritz
.
AW: Zellinhalte per VBA löschen
19.01.2019 15:17:22
Fritz
Hallo Onur,
vielen Dank, das funktioniert.
Ich muss allerdings den Code aus dem Tabellenblatt "Januar" aufrufen.
Ich würde gerne das Makro auch aus einem anderen Tabellenblatt ausführen können.
Wäre nett, wenn man das noch entsprechend ändern könnte.
mfg Fritz
variante mit Autofilter
19.01.2019 16:28:14
Daniel
Hier
prorier mal, da nutzt den Autofilter mit TopTen-Filtermethode.
die erste Zeile ist sollte die Überschrift sein und wird nicht mit gelöscht:
Sub Makro1()
With Sheets(1).UsedRange.Columns(1)
.AutoFilter Field:=1, Criteria1:="1", Operator:=xlTop10Items
.Offset(1, 0).Resize(, 19).ClearContents
.AutoFilter
End With
End Sub
Gruß Daniel
variante mit Autofilter
19.01.2019 16:28:17
Daniel
Hier
prorier mal, da nutzt den Autofilter mit TopTen-Filtermethode.
die erste Zeile ist sollte die Überschrift sein und wird nicht mit gelöscht:
Sub Makro1()
With Sheets(1).UsedRange.Columns(1)
.AutoFilter Field:=1, Criteria1:="1", Operator:=xlTop10Items
.Offset(1, 0).Resize(, 19).ClearContents
.AutoFilter
End With
End Sub
Gruß Daniel
AW: variante mit Autofilter
19.01.2019 16:54:02
Fritz
Hallo Daniel
funktioniert prima.
Vielen Dank.
mfg
Fritz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige