22. marts 2006 - 22:46Der er
5 kommentarer og 1 løsning
Finde sidste forekomst vha. makro.
Jeg har en makro hvor jeg i en kolonne har nogle forskellige bogstaver
Disse bogstaver er sorteret, og på et tidspunkt skal jeg have indsat en blank linie efter det sidste U, det har jeg så løst på følgende måde, hvor den finder det første U, og så ved hjælp af en løkke rykker ned indtil der ikke længere er et U og så indsætter linien.
Columns("O:O").Select Range("O6").Activate Selection.find(What:="U", After:=ActiveCell).Activate Do Until ActiveCell.Value = "" If ActiveCell.Value = "U" Then ActiveCell.Offset(1, 0).Select Else Selection.EntireRow.Insert End If Loop
Spørgsmålet er om der er en hurtigere måde, at finde den sidste forekomst af et U som i dette eksempel.
Det kan jo godt tage lidt tid at rykke igennem 10-20.000 linier.
Public Sub test2() Dim RW As Long, D As Variant, I As Long RW = Range("O65536").End(xlUp).Row + 1 D = Range("O1:O" & RW) For I = RW To 2 Step -1 If D(I - 1, 1) = "U" Then Range("O" & I).EntireRow.Insert Range("O" & I).Select Exit For End If Next D = Empty End Sub
Public Sub test2() Dim RW As Long, D As Variant, I As Long RW = Range("O65536").End(xlUp).Row + 1 ' finder den række der er under den sidste udfyldte celle D = Range("O1:O" & RW) ' læser cellerne ind i variabelen D, det er hurtigere at finde i en variabel en ved at ' tjekke celler, derfor hastigheden.
For I = RW To 2 Step -1 ' læser baglæns, for st finde det sidste U If D(I - 1, 1) = "U" Then ' når U er fundet Range("O" & I).EntireRow.Insert ' sættes en række ind Range("O" & I).Select ' aktiverer cellen Exit For ' hopper ud af løkken End If Next D = Empty ' tømmer variablen End Sub
Jeg mente ellers jeg accepterede sidst, men så forsøger vi da bare igen.
Fortsat god weekend.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.