• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro om rijen te verwijderen uit tabel als gedeelte in cel staat

Status
Niet open voor verdere reacties.

Tweety1

Gebruiker
Lid geworden
6 mrt 2013
Berichten
637
Hi,

Onderstaande macro gebruik ik om een rij uit een tabel te verwijderen. Alleen weet ik niet hoe ik deze moet aanpassen zodat de rijen worden verwijderd waar het woord Groep (Groep 1, groep 2, Groep 10, etc ) in voorkomt kan verwijderen.

Code:
Sub Macro1()
Application.ScreenUpdating = False
    rgl = ActiveSheet.UsedRange.Rows.Count
For r = rgl To 2 Step -1
    If Range("I" & r) = "Groep" Then

    Range("A" & r) = Range("A" & r + 1)
    Range("B" & r) = Range("B" & r + 1)
    Range("C" & r) = Range("C" & r + 1)
    Range("D" & r) = Range("D" & r + 1)
    Range("E" & r) = Range("E" & r + 1)
    Range("F" & r) = Range("F" & r + 1)
    Range("G" & r) = Range("G" & r + 1)
    Range("H" & r) = Range("H" & r + 1)
    Range("I" & r) = Range("I" & r + 1)
    Range(Range("A" & r + 1), Range("I" & r + 1)).Delete Shift:=xlUp
    End If
Next r
Application.ScreenUpdating = True
End Sub

mvg

Kasper
 
Gebruik de functie InStr om te controleren op een bepaalde waarde.
 
Het is hier al zo vaak geschreven: bij zulk soort vragen moet je een voorbeeldbestand bijvoegen, anders moeten vragenbeantwoorders jouw (veronderstelde) werkblad gaan nabouwen en blijven er ook altijd onduidelijkheden over. Zo heb je het in je vraag er over of het woord groep in een bepaalde rij voorkomt, terwijl het in je macro alleen in kolom G kan voorkomen. Uitgaande van het laatste en ook andere aannames in aanmerking genomen kun je deze macro gebruiken:
Code:
Sub macro1()
Dim myrange As Range, r As Integer, rc As Integer
Set myrange = Sheets("Blad1").UsedRange
'Deze macro is geschreven door Zapatr
Application.ScreenUpdating = False
With myrange
rc = .Rows.Count
For r = rc To 2 Step -1
If LCase(Left(.Cells(r, 9), 5)) = "groep" Then
If r = rc Then rc = rc + 1
.Range(.Cells(r + 1, 1), .Cells(rc, 9)).Cut .Cells(r, 1)
rc = rc - 1
End If
Next r
End With
Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Eentje die iets makkelijker te lezen is voor een beginnend VBA-er.
Code:
Sub Macro1()
    Application.ScreenUpdating = False
    For r = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
        If InStr(1, LCase(Range("I" & r)), "groep", 1) Then
            Range("A" & r).Resize(, 9).Value = Range("A" & r + 1).Resize(, 9).Value
            Range(Range("A" & r + 1), Range("I" & r + 1)).Delete xlUp
        End If
    Next r
    Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Als 'groep' slechts 1 keer voorkomt in kolom I:

Code:
sub M_snb()
   columns(9).find("groep",,,xlpart).entirerow delete
End Sub

Als 'groep' vaker voorkomt in kolom I
Code:
sub M_snb()
  with activesheet.cells(1).currentregion.columns(9)
    .autofilter 1, "*groep*"
    .offset(1).specialcells(12).entirerow.delete
    .autofilter
  end with
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan