• 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.

VBA legen rijen verwijderen a.d.v. voorwaarden "tekst"

Status
Niet open voor verdere reacties.

arwenv

Gebruiker
Lid geworden
26 feb 2016
Berichten
7
Goeiedag excel-goeroe's,

Ik heb enige ervaring met VBA codes, maar bij deze kom ik er niet uit. Ik heb een knop aangemaakt, waardoor als je erop klikt het excel bestand in PDF wordt opgeslagen.
Maar voordat hij het bestand opslaat, wil ik dat bepaalde rijen automatisch worden verwijderd, doordat er in een andere cel een bepaalde waarde staat.
Ik heb nu de volgende code, maar hij geeft elke keer een foutmelding of hij doet het gewoon niet. Ik hoop dat jullie kunnen helpen.
Elke voorwaarde die in deze code is geschetst staat los van elkaar. Oftewel; als de ene voorwaarde wordt doorgevoerd en de rijen worden verwijderd of niet, dan geldt de volgende voorwaarde ook. Dus het is niet "of" maar "en".


Private Sub CommandButton2_Click()
'
' CommandButton2_Click Macro
'
Sheets("SLA").Select
If Range("B263").Value = "5 Afwijkende afspraken standaard modules" Then
Range("B265" & lRij & "B281:B287" & lRij & "B279").Rows.Delete
Next
If Range("B263").Value = "5 DAP" Then
Range("B265" & lRij & "B281:B287" & lRij & "B279").Rows.Delete
Next
If Range("B288").Value = "6 DAP" Then
Range("B290").Rows.Delete
Next
If Range("B305").Value = "6.2 Prijzen" Then
Range("B307:B315").Rows.Delete
Next
Sheets("SLA").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
CStr(Range("P1").Value) & " - " & CStr(Range("P2").Value) & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

End Sub

Ik hoor het graag!
 
Rijen verwijderen doe je vanaf onderen naar boven.
 
Bedankt voor je reactie, maar ik snap niet wat ik dan met de code moet doen. Als ik de voorwaarde omdraai, zodat hij eerst de onderste rijen verwijderd en zo naar boven toe moet werken, doet hij het ook niet.
 
Er mankeert inderdaad ook nog iets aan je code.
Onderstaande coderegel kan ik niet plaatsen in Vba term.
Code:
[COLOR=#3E3E3E]Range("B265" & lRij & "B281:B287" & lRij & "B279").Rows.Delete[/COLOR]

Plaats een voorbeeldbestand, dan kunnen we zien wat er moet gebeuren ipv. gokken.
 
Kan je het geheel niet even in een voorbeeld bestandje gieten? Deze opgenomen macro geeft niet erg veel duidelijkheid waarom je iets wil verwijderen. Ik denk dat je beter het autofilter kan gebruiken.

Nb code mag voor de leesbaarheid tussen codetags.
 
Bekijk bijlage voorbeeld.xlsx


Hier een voorbeeldbestandje waar in een 'normale' formule beschreven staat wat ik wil dat er gebeurd als ik de knop indruk.
Dus als een bepaalde cel een waarde bevat in tekst, dan moet hij bepaalde rijen verwijderen + als er in een andere cel een bepaalde waarde bevat in tekst, dan moet hij ook bepaalde rijen verwijderen.
Het zijn dus meerdere handelingen die de VBA moet kunnen uitvoeren.

Ik hoop dat jullie mij kunnen helpen!
 
Het is allemaal wel te realiseren, maar met onderstaande regel erin maak je het wel een beetje verwarrend, vind je niet?

In b13 staat "TEKST" en in B16 en B17 staat.
Code:
ALS(B13="TEKST"; dan deze rij en rij 17 verwijderen')
 
Is het niet duidelijk? Ik wil dat als in b13 bijvoorbeeld "tekst" staat dat rij 16 en 17 worden verwijderd. En als in b19 "tekst" staat dat bijvoorbeeld rij 20, 22 en 24 tot 25 verwijderd wordt.

Als ik weet hoe ik de code schrijf, kan ik de regelnummers en de specifieke tekst wel aanpassen.
 
En het is nog niet duidelijk.
Als ik al niet weet wat de bedoeling is hoe wil jij dan iets aanpassen?

Er zit geen structuur in het verwijderen van regels.
Dus zomaar uit de lucht gegrepen.... ach nu doen we rij 88 ?
 
Er zit wel structuur in, maar ik wil weten wat de vba code is om dat in werking te stellen.
Of je nu een Vba code opstelt die regels 16 en 17 verwijdert als er in een cel een bepaalde tekst staat of regel 88 verwijdert, dat maakt toch niet uit... de regel eromheen is belangrijk. De getallen kan ik aanpassen.
 
Have fun.

Code:
sub hsv()
dim cl as range
for each cl in columns(1).specialcells(2)
  if lcase(cl) = "tekst" cl.resize(10).clearcontents
next cl
end sub
 
Dankjewel. Ik denk alleen niet dat dit helpt, omdat de rij echt verwijderd moet worden en niet alleen de inhoud daarvan.

Zoals in het voorbeeld bestandje... als ik op de knop druk moet ie het volgende doen:
Als b4="tekst" dan verwijderen rij 8 en 9.
En
Als b13="tekst" dan verwijderen rij 16 en 17
Zo niet, dan geen rijen verwijderen.

Het gaat erom dat in het oorspronkelijke bestand de tekst in de cellen verandert door ja/nee in te vullen op een ander blad. Alleen moet er als er ja ingevuld wordt ergens een tabel getoond worden. Die tabel staat er nu dus sowieso in maar is het antwoord dan nee, dan wil ik dat de rijen worden verwijderd waar de tabel in staat zodat die gegevens niet te zien zijn.
 
Code:
sub hsv()
 if lcase([b13]) = "tekst" then rows("16:17").delete
 if lcsae([b4]) = "tekst"  then rows("8:9").delete
end sub
 
Bedankt! Ik heb de code gekopieerd en de waarden naar wens aangepast. Er zitten geen foutmeldingen in, maar rijen verwijderen doet hij nog niet. Mis ik nog iets in mijn code?
Private Sub CommandButton2_Click()
'
' CommandButton2_Click Macro
'
Sheets("SLA").Select
If LCase([b303]) = "7 Overeengekomen prijzen en looptijd" Then Rows("265:266" & "279:287").Delete
If LCase([b288]) = "6 Overeengekomen prijzen en looptijd" Then Rows("313:323").Delete
If LCase([b288]) = "6 DAP" Then Rows("290").Delete
If LCase([b263]) = "5 Overeengekomen prijzen en looptijd" Then Rows("290" & "305:323").Delete
If LCase([b263]) = "5 Afwijkende afspraken standaard modules" Then Rows("265" & "279:287").Delete
If LCase([b263]) = "5 DAP" Then Rows("265" & "279:287").Delete
Sheets("SLA").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
CStr(Range("P1").Value) & " - " & CStr(Range("P2").Value) & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

End Sub
 
Verwijder LCase of zet....
Code:
[COLOR=#333333][I]"7 Overeengekomen prijzen en looptijd"[/I][/COLOR]
Zonder hoofdletter erin.
Daar staat LCase nl. voor.
 
Overigens moet je vanaf onderen de rijen verwijderen.
Dus eerst rij 313, dan kleiner.
Als je het andersom doet schuiven de cellen omhoog en is [b288] de werkelijke [B288] niet meer.

En dit moet je ook nog aanpassen.
Code:
union(Rows("290"),rows("305:323"))
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan