altså det kan godt lade sig gøre , men VBA kan ikke køre aktivt hele tiden ... det vil koste for mange ressourcer.
der er to muligheder 1. VBA køre en gang i minuttet og fjerner linjer med løst 2. du skriver løst i dine linjer og trykker på en Marko knap der fjerner alle linjer med løst (den mest resurse venlige)
Sub SletLøstRækker() Dim ws As Worksheet Dim rng As Range Dim cell As Range Dim lastRow As Long
' Vælg det aktive ark Set ws = ActiveSheet
' Find den sidste brugte række i kolonne E lastRow = ws.Cells(ws.Rows.Count, 5).End(xlUp).Row
' Gennemgå rækker baglæns for at undgå problemer med rækkeindekset For i = lastRow To 1 Step -1 If LCase(ws.Cells(i, 5).Value) = "løst" Then ws.Rows(i).Delete End If Next i
MsgBox "Rækker med 'løst' i kolonne E er blevet slettet.", vbInformation, "Færdig" End Sub
Må jeg spagfærdigt foreslå at den kopiere linjen et andet sted hen, f.eks. en skjult fane - ellers vil det jo være nemt at påstå det er løst når det ikke er der :-)
den her kan godt renses lidt ud .. det er en copy/paste fra noget andet ... fjern evt ark oprettelsen og kontrollen af tilstedeværelsen af "LØST" så bliver det lidt pænere
Sub FlytLøstRækker() Dim wsSource As Worksheet Dim wsDest As Worksheet Dim rng As Range Dim cell As Range Dim lastRow As Long Dim destRow As Long Dim i As Long
' Definer kildearket (det aktive ark) Set wsSource = ActiveSheet
' Tjek om arket "LØST" findes, ellers opret det On Error Resume Next Set wsDest = ThisWorkbook.Sheets("LØST") If wsDest Is Nothing Then Set wsDest = ThisWorkbook.Sheets.Add wsDest.Name = "LØST" End If On Error GoTo 0
' Find den sidste brugte række i kildearkets kolonne E lastRow = wsSource.Cells(wsSource.Rows.Count, 5).End(xlUp).Row
' Find den næste ledige række i "LØST"-arket destRow = wsDest.Cells(wsDest.Rows.Count, 1).End(xlUp).Row + 1
' Gennemgå rækker baglæns for at undgå problemer med rækkeindekset For i = lastRow To 1 Step -1 If LCase(wsSource.Cells(i, 5).Value) = "løst" Then ' Kopier hele rækken til "LØST" wsSource.Rows(i).Copy wsDest.Rows(destRow) ' Slet rækken fra kildedokumentet wsSource.Rows(i).Delete ' Opdater næste ledige række i "LØST" destRow = destRow + 1 End If Next i
MsgBox "Rækker med 'løst' i kolonne E er blevet flyttet til arket 'LØST'.", vbInformation, "Færdig" End Sub
Jeg holder fast, ikke pga snyd, men sletning er nok ikke bedste vej frem på lang bane. Så kan du jo år til år slette i den anden fane manuelt en gang for alle.
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.