Avatar billede boso Juniormester
01. maj 2023 - 16:25 Der er 3 kommentarer og
3 løsninger

Slette række på baggrund af søgning i kolonne

Hejsa
Jeg har en lille makro som jeg ikke helt kan få til at virke.
Der sker faktisk intet når jeg sætter den igang.

Dybest set skal den eftersøge kolonne D for ordet Test. Indgår ordet "test" skal den slette rækken.

Nogen bud på hvad jeg gør forkert? (pænt novice agtig i VBA regi)

Sub slette_test()

' slette_test Makro
' slette test i kolonne 4 (D)

  ' Sub slette_test()
Dim intLastLine As Integer
Dim intL As Integer

intLastLine = Range("A1").CurrentRegion.Rows.Count
 
For intL = intLastLine To 1 Step -1
    If InStr(Cells(intL, 4).Value, "test") > 1 Then
    Rows(intL).EntireRow.Delete
        End If
Next intL

End Sub
Avatar billede Jan K Ekspert
01. maj 2023 - 17:22 #1
Ret >1 til >0
Avatar billede Jan K Ekspert
01. maj 2023 - 17:33 #2
Der er også noget galt med  denne linje

intLastLine = Range("A1").CurrentRegion.Rows.Count

Den tæller altid intLastLine som 1.

Prøv med

intLastLine = Range("d1000").End(xlUp).Row

Ret D1000 til noget relevant,
Avatar billede ebea Ekspert
01. maj 2023 - 17:56 #3
Prøv med denne kode:
Vær opmærksom på, at den sletter kun hvis ordet er med småt (test) ikke (Test).

Sub slette_test()
Dim iLastRow As Long
Dim i As Long
    iLastRow = Cells(Rows.Count, "D").End(xlUp).Row
    For i = iLastRow To 1 Step -1
        If Cells(i, "D").Value = "test" Then
        Rows(i).Delete
        End If
    Next i
End Sub
Avatar billede boso Juniormester
02. maj 2023 - 17:26 #4
Hej Ebea
Din kode virker - men hvis der nu f.eks. står "test KFN" så sletter den ikke. Kan det kodes så den bare kigger efter "test" plus hvad end der så ellers måtte stå. Og skal kodelinjen skrives to gange for at fange store som små bogstaver?

Mvh
Bo
Avatar billede boso Juniormester
02. maj 2023 - 17:32 #5
Hej Jan
Det havde absolut sin effekt at rette >1 til >0. Har ingen ide om hvorfor - men pyt, det virkede.

Jeg har dog samme udfordring som det andet forslag - den sletter kun præcis hvad der står i " ". Kan det laves så den sletter når ordet "test" indgået - uagtet om det er store eller små bogstaver, bare ordet står i cellen i den pågældende række?
Avatar billede ebea Ekspert
02. maj 2023 - 18:50 #6
#4 - Så skal du over i at bruge noget Filter funktion, eller lave et Array hvor du indsætter de mulige ord kombinationer der kan forekomme.
Her er en mulighed med at benytte Filter.

Sub slette_test()
With ActiveSheet
    .AutoFilterMode = False
    With Range("A1", Range("D" & Rows.Count).End(xlUp))
        .AutoFilter 1, "test*"
        On Error Resume Next
        .Offset(1).SpecialCells(12).EntireRow.Delete
    End With
    .AutoFilterMode = False
End With
End Sub
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester