10. oktober 2005 - 15:01Der er
5 kommentarer og 1 løsning
Fjern ikke farvede rækker
Jeg har følgende makro, der fjerner de ikke farvede rækker i en liste. Problemet er dog bare, at makroen ikke kun køres på listen, men på hele arket, hvorfor makroen bliver ved med at køre. Hvad skal jeg skrive, så makroen kun køres på listen?
Public Sub FjernIkkeFarvede() col = ActiveCell.Column RowCount = Cells(65536, col).End(xlUp).Row Range(Cells(1, col), Cells(65536, col).End(xlUp)).Select For I = 1 To RowCount If Cells(I, col).Interior.ColorIndex = xlNone Then Cells(I, col).EntireRow.Delete Shift:=xlUp I = I - 1 RowCount = RowCount - 1 End If Next End Sub
Uden at være expert i hvordan excel fortolker VBA, så vil jeg gætte på, at problemet ligger i måden du kontrollerer din løkke:
For I = 1 To RowCount
I = I - 1 RowCount = RowCount - 1
Next
Mit bud er, at RowCount kun evalueres første gang forløkken startes, dvs. du ender med at I "står stille" og RowCount ikke påvirker afviklingen af løkken.
Det er i øvrigt lidt farligt at tælle ned på din counter i en for/next løkke. Du risikerer en uendelig løkke. Du kan tælle op eller bruge andre variable som flag i stedet.
Inden du kører makroen skal du markerer en celle i kolonnen
Public Sub FjernIkkeFarvede() Dim col As Long Dim RowCount As Long Dim I As Long col = ActiveCell.Column RowCount = Cells(65536, col).End(xlUp).Row For I = RowCount To 1 Step -1 If Cells(I, col).Interior.ColorIndex = xlNone Then Cells(I, col).EntireRow.Delete Shift:=xlUp End If Next End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.