896 Aufrufe
in Tabellenkalkulation von
Hallo.

In Zeile 1 meiner Tabelle erstelle ich Summen der darunter liegenden Zellen. Wenn Summe = 0 ist, soll die Spalte per Makro gelöscht werden. Anbei mein Code

Do While ActiveCell.Value <> ""

If ActiveCell.Value = "0" Then

ActiveCell.EntireColumn.Delete

Else

ActiveCell.Offset(0, 1).Select

End If

Loop


Der funktioniert einwandfrei, allerdings dauert es mir zu lange bis alle 52 Spalte durchlaufen sind. Gibts da eine Prozedur, welche die Aufgabe schneller erledigen kann?

5 Antworten

0 Punkte
von
Hallo mabon!

Schreibe vor die Zeile

[code]Do While ActiveCell.Value <> ""[/code]

die Zeile

[code]Application.ScreenUpdating = False[/code]

Das bewirkt, dass die Bildschirmaktualisierung ausgeschaltet wird. Außerdem lass die Zeile

[code]ActiveCell.Offset(0, 1).Select
[/code]
weg. Die bewirkt doch gar nichts, außer dass Sie etwas markiert, was nicht notwendig ist. Außerdem kann man fast gänzlich auf[i] .Select [/i]verzichten.

MfG,
Oliver
0 Punkte
von
Hallo Oliver.

Danke für Deine Antwort. Ich habe das gleich ausprobiert. Leider bringt es am Ende keinen merklichen Performance - Schub. Die Prozedur muss halt immernoch alle 52 Zellen durchlaufen und den Inhalt prüfen.

Vielleicht gibt es ja noch eine andere Möglichkeit.
0 Punkte
von
Hallo!

Darf ich mal fragen, was bei Dir "dauert zu lange" ist. Wie lange, in Zeit ausgedrückt, dauert denn der VBA-Code?

Gruß,
Oliver
0 Punkte
von
Hallo Comunitty

Bei einer absoluten Adressierung könnt Ihr die Adressen Sammeln und dann per Range(Sammelstring).delete mit einem Rutsch löschen!

Adressierung z.b. B + D
$B$1:$B$65536,$D$1:$D$65536

Gruß Nighty
0 Punkte
von
Hallo Community!

Tip!
Der anhand einer If Bedingung erzeugte String(Construct) innerhalb einer Schleife könnte dann so aussehen!

SpIndex,waere hier der SchleifenIndex

[code]Daten = Daten & Cells(1, SpIndex).Address & ":" & Cells(Rows.Count, SpIndex).Address & ","[/code]

Gruß Nighty

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...