Makro läuft und läuft ...

02/12/2010 - 01:39 von Peter Schuerer | Report spam
Hallo Zusammen,

XL2002.

Ich habe eine Tabelle mit 54 Spalten. In Zeile 1 stehen die
Überschriften, insgesamt 54.
Davon sind 14 Zellen in Zeile 1 mit Hintergrundfarbe "Gelb" formatiert,
die anderen sind ohne Farbe.
Ich möchte jetzt alle Spalten löschen die keine Farbe als Füllung in
Zeile 1 haben. Das wollte ich mit diesem Makro machen:

Sub SpaltenLoeschen()
Dim i
Range("A1").Activate
For i = 1 To 60
If ActiveCell.Interior.ColorIndex <> 6 Then
Columns(i).Delete
i = i - 1
Else
ActiveCell.Offset(0, 1).Select
End If
Next i
End Sub

Das Makro làuft ohne Ende und wenn ich es abbreche sind von den 14
gelben Spalten nur noch 7 übrig.
Ich weiß das es an der Zeile i=i-1 liegt, aber ich weiß leider nicht wie
ich das lösen soll.
Am besten wàre ein Makro das alle Spalten, die in Zeile 1 keine Füllung
haben, löscht.

Danke und Gruß
Peter
 

Lesen sie die antworten

#1 Detlev Rentmeister
02/12/2010 - 07:08 | Warnen spam
Am 02.12.2010 01:39, schrieb Peter Schuerer:
Hallo Peter,

du hast dir da eine schöne Endlosschleife programmiert. ;)
Dein Code wird nur beeindet ,falls du 60 eingefàrbte Kopfzeilen hast.
Schau mal dir im Einzelschritt ("F8") mal an was dein Marko macht.


Sub SpaltenLoeschen()
Dim i
Range("A1").Activate
For i = 1 To 60
If ActiveCell.Interior.ColorIndex <> 6 Then
Columns(i).Delete
i = i - 1



Schleifenindex in der For-Schleife zu àndern ist immer gefàhrlich.
Besser ist dann die Schleife anders zu gestalten. Um den Code etwas
schneller zu machen. Solltes du möglichst auf Select verzichten.

Hier ein Beispiel wie es Funktionieren könnte.

Sub SpaltenLoeschen()
Dim i
For i = 60 To 1 Step -1
If Cells(1, i).Interior.ColorIndex <> 6 Then
Columns(i).Delete
End If
Next i
End Sub

mit freundlichen Grüße

Detlev Rentmeister

Ähnliche fragen