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

Geselecteerde + naast liggende cellen verwijderen

Status
Niet open voor verdere reacties.

jansm

Gebruiker
Lid geworden
2 apr 2014
Berichten
421
Ik heb op een tabblad meerdere tabellen. Nu wil ik van één tabel (kolom D E en F) een aantal cellen in D + de 2 naastliggende ( E en F) cellen verwijderen. Met de macro die ik tot nu toe heb moet ik de cellen in kolom D E en F selecteren.
Ik wil graag hetzelfde resultaat maar dan door alleen de cellen in D te selecteren. Kan dat?

Bekijk bijlage CellenVerwijderen.xlsb
 
Letterlijk antwoord zonder verdere controles:
Code:
Sub KolsDEF_Verwijder()
    adr = Split(Selection.Address, "$")
    adr(3) = "F"
    Range(Join(adr, "")).ClearContents
End Sub
 
Code:
Sub VERWIJDER()
  ActiveCell.Resize(, 3).Delete
End Sub
 
edmoor, gaat niet helemaal goed.

VenA, doet het goed als één cel geselecteerd wordt. Bij meerdere selecties wordt alleen de laatste verwijderd

Code:
ActiveCell.Resize(, 3).Delete Shift:=xlUp
 
Laatst bewerkt:
Zo beter?
Code:
Sub VERWIJDER()
  Selection.Resize(, 3).Delete
End Sub
 
edmoor, gaat niet helemaal goed.

Daar heb ik niks aan uiteraard.
WAT gaat er niet goed?
En moeten de cellen leeg gemaakt worden?
Of verwijderd en dan naar boven verplaatsen?
 
@VenA:
Bij een aaneen gesloten selectie werkt dat inderdaad goed, maar niet als er cellen afzonderlijk op niet opeenvolgende regels zijn geselecteerd en zo staat het in het voorbeeld bestandje.
 
sorry edmoor, ff met VenA optie bezig geweest. Dat zag er voor mij simpeler uit.
Nu jij.
Hier het resultaat van jouw code

Verwijder.JPG
 
Dus alleen leeg maken?
 
Blijkbaar moet ik mijn bril even oppoetsen:d

Code:
Sub VenA()
  Dim r As Range, cl As Range
  For Each cl In Selection
    If r Is Nothing Then Set r = cl.Resize(, 3) Else Set r = Union(r, cl.Resize(, 3))
  Next cl
  If Not r Is Nothing Then r.Delete
End Sub
 
Nou VenA, ik vond jouw eerste oplossing wel erg simpel voor jou doen hoor. Ik dacht daar kan ik zelf nog wel iets aan knutselen. Dus niet.
Deze oplossing past beter bij jou!!!! haha
Doet wat ik graag wil. Bedankt, ook edmoor!
 
Misschien wat makkelijk lezen voor jansm:
Code:
Sub KolsDEF_Verwijder()
    adr1 = Split(Selection.Address, "$")
    adr2 = adr1
    adr3 = adr1
    
    For i = 1 To UBound(adr2) Step 2
        adr2(i) = "E"
        adr3(i) = "F"
    Next i

    Range(Join(adr1, "")).Delete
    Range(Join(adr2, "")).Delete
    Range(Join(adr3, "")).Delete
End Sub

Die van VenA is wel mooier.
Verdiep je er eens in.
 
edmoor, code vindt een "dubbelzinnige naam". Kom er niet uit
 
Laatst bewerkt:
Doe maar eens je best. 2 procedures met dezelfde naam zal deze melding geven.
 
Yep! De naam van een Sub of Function mag maar 1x in een sectie/module voor komen.
Als het een Public is zelfs maar 1x in het hele project.
 
klopt uiteraard!!
nu loopt ie vast op ".....overlappende selecties" op
Code:
Range(Join(adr1, "")).Delete

Ik kan zoeken tot ik een ons weeg, maar ik zie het niet. Als ie door de lus heen is dan loopt ie vast, met i=5.
 
Hier in je voorbeeld document werkt het prima dus kan ik zo niks over roepen.
Geen idee wat je bedoelt met: ".....overlappende selecties"
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan