4.4k Aufrufe
Gefragt in Tabellenkalkulation von
ein Hallo an Alle,

habe folgendes Problem:

Worksheets(TABELL).Range(Cells(ZAE, 1), Cells(ZANZ, 40)).Select
Delete.Row.Selection

mit diesem Modul-Ausschnitt möchte ich einen Zellenblock markieren und anschließend die Zeilen dieses Blocks löschen.
im ersten Augenschein einfach, doch ich beschäftige mich schon seit Tagen mit der Lösung.
Besonderheit dabei: das angesprochene, selektierte Sheet ist 1 Detail-Sheet aus 1 Pivot-Tabelle.
Kurzbeschreibung der Vorgehensweise: aus 1 Pivot wird duch Drill-Down ein neues Sheet erstellt, welches nachbearbeitet wird. Dabei sollen überflüssige Zeilen gelöscht werden und die Zahlen vernünftig formatiert werden.
Vielleicht fällt ja Jemanden etwas zur Lösung ein.
Würde mich freuen, was zu hören.
Karlheinz

22 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Karlheinz,

ist TABELL auch eine Variable oder der Name der Tabelle?

Falls das der Name der Tabelle ist, dann sollte es mit folgender Zeile klappen:

Worksheets("TABELL").Range(Cells(ZAE, 1), Cells(ZANZ, 40)).Delete xlShiftUp


Falls du die ganze Zeile und nicht nur den Bereich bis Spalte 40 löschen willst, dann verwende folgende Zeile:

Worksheets("TABELL").Range(Cells(ZAE, 1), Cells(ZANZ, 1)).EntireRow.Delete xlShiftUp


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,
danke für Deine Info.
TABELL ist eine Variable, mit dem Namen des zu bearbeitenden Sheets. Kann leider nicht fix eingestellt werden, da ja dies die Detail Tabelle ist, welche mit einer Input-Box eingestellt wird.
Deinen Vorschlag habe ich versucht, kommt dabei aber mit einer Fehlermeldung "Laufzeitfehler 1004"
Ich weiß es nicht aber irgendwie habe ich die Vermutung, dass meine Probleme mit der Pivottabelle als Ausgangspunkt zu tun haben ?, kann sein, dass das Blödsinn ist, aber habe ähnliche Dinge schon des öfteren(ohne Pivot) gelöst und hatte nie dermaßene Schwierigkeiten.
Vielleicht fällt Dir ja noch was ein.
Danke jedenfalls
Gruß
Karlheinz
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

wenn TABELL eine Variable ist, dann müssen die Anführungszeichen beim Ausdruck WORKSHEETS weg. Also entweder

Worksheets(TABELL).Range(Cells(ZAE, 1), Cells(ZANZ, 40)).Delete xlShiftUp


bzw.

Worksheets(TABELL).Range(Cells(ZAE, 1), Cells(ZANZ, 1)).EntireRow.Delete xlShiftUp


Stelle sicher, dass der übergebene Tabellename stimmt, lass ihn dir doch einfach mal vor der Löschzeile anzeigen mit:

MsgBox TABELL


Ansonsten kannst du ja mal eine Beispieltabelle mit ein paar Dummydaten einstellen, z.B.
hier, und dann den entsprechenden Link posten.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,

noch ein Nachtrag: auch wenn ich (String-)Variable TABELL in Worksheets("Tabelle(N))" anpasse, hat das keine Auswirkung, nach wie vor der Laufzeitfehler.

Gruß
Karlheinz
0 Punkte
Beantwortet von
Hallo M.O.,
(bin ein bisschen von Deiner schnellen Antwort überrascht)
Der Tabellenneme passt, da kommt vorher immer Debug.Print Tabell und da zeigt er mir immer die richtige an. Das mit den Dummy Daten ist ein guter Vorschlag, nur brauche ich da etwas Zeit, das wird also Spät-Nachmittag werden, die aufzubauen.
Vielen Dank jedenfalls für Deine Bemühungen
Gruß
Karlheinz
0 Punkte
Beantwortet von
Hallo M.O.
unsere Unterhaltung hat mich auf 1 neue Idee gebracht.
Habe 1 neues Workbook eröffnet, das Detail-Sheet reinkopiert. Das VBA-Modul kopiert und laufen lassen und siehe da: alle meine Probleme sind verschwunden.
Kein Laufzeitfehler und sonstige Ungereimtheiten, läuft wie eine 1.
(Das funktioniert allerdings nicht !!!, wenn ich im Original-Workbook nur das Sheet kopiere). Fühle mich darin bestätigt, dass es mit der Pivot-Tab. zu tun hat.
Mein nächster Schritt wird also sein, im Makro folgendes unterzubringen.
a) Neues Workbook anzulegen
b) das Sheet da rein zu kopieren
c) das Modul an das neue Sheet angepasst zum Laufen zu bringen.

Wenn Dir adhoc dazu was einfällt, bin für jede Hilfe dankbar

Gruß
Karlheinz
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Karlheinz,

hast du das Sheet innerhalb der Arbeitsmappe kopiert oder hast du ein neues Sheet angelegt und die entsprechenden Daten dann hineinkopiert? Ggf. reicht das ja schon aus.

Falls nicht überlege ich mir mal was.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.
nett, dass Du immer noch dabei bist.

Ich habe innerhalb des WB 1x mit Sheet-Copy und 1x 1 neues Sheet angelegt und mit Wertkopie gefüllt, beide Male mit dem gleichen - fehlerhaftem - Ergebnis.

Als ich dann 1 neues WB angelegt habe, die Daten mit Copy reingestellt, das Modul kopiert, dann klappte es wie geschmiert also Null-Problemo.
Ich komme aus der Arbeit momentan nicht weg, denke aber noch an den Aufbau des Dummy-Sheets. Wenn es realistisch sein soll, muß ich wohl auch die Pivot aufbauen, weil ich denke, dass dies der Ausgangspunkt für die Probleme darstellt und das ist dann doch nicht in 5 Min. zu packen, wird also später werden.

Danke für Dein Interesse

Gruß
Karlheinz
0 Punkte
Beantwortet von
Hallo M.O.,
habe nun 1 gekürzte Test-Tabelle(Test2 im Foren-Bereich) hochgeladen. Hoffe, Du hast da ohne Probleme Zugriff drauf, melde Dich bitte, wenn Du weitergehende Infos für den Zugriff brauchst. Das Orig.Sheet hat mittlerweile 250 Tsd. Sätze und wird am Ende ca. 750 Tsd. haben. Das Register zeigt die jeweiligen Bereiche. Basis, Pivot und Tabelle5 ist das Problem-Sheet um das es geht. Der Drill-Down wurde von der Pivot auf Sp.1 - 4-132 durchgeführt. Wenn Du Dir die Detail-Liste ansiehst, verstehst Du sicherlich mein Problem. In der 4-132 Sp. sind 0 bzw. Blank-Sätze, die in einer Detail-Liste eigentlich nichts zu suchen haben, abgesehen von der nicht schön anzusehenden Zahlenformatierung. Der kpl. Modul-Code ist im Pivot-Bereich geladen.
Ich werde heute sicherlich nichts mehr damit anfangen.
Sollte Dir irgendwas zur Lösung einfallen, nett, wenn Du mich daran teilhaben lässt.
Gruß und gute Nacht
Karlheinz
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Karlheinz,

habe nun 1 gekürzte Test-Tabelle(Test2 im Foren-Bereich) hochgeladen


Damit kann ich leider nichts anfangen. Du müsstest schon einen Link posten.

Gruß

M.O.
...