Inhoud cellen wissen met macro

  • Onderwerp starter Onderwerp starter MBBS
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

MBBS

Gebruiker
Lid geworden
7 feb 2006
Berichten
269
Ik wil via een knop gegevens van de cellen achterliggend op deze rij wissen.

BV.
In kolom D staat telkens op elke rij een "X" met daaraan een macro gelinkt
Als men op de "X" van rij 10 klikt dan moet op deze rij 10 de inhoud van de cellen E, F H verwijderd worden.
Klikt men op de "X" van rij 11 dan moeten hier de gegevens worden verwijderd.. enz.

Dus liefst een macro die kijkt op welke rij de "X" staat en aan de hand daarvan de cellen leegmaakt.
 
Zo zou het kunnen.
Zonder knop.
Telkens als je in kolom D op een cel staat met een "x" als waarde, maakt het kolom E, F en H leeg.
Moet ook de opmaak weg, dan maak je van .Clearcontents → .Clear
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Target, Columns(4)) Is Nothing Then
     If Target = "x" Then
Target.Offset(, 1).ClearContents 
Target.Offset(, 2).ClearContents 
Target.Offset(, 4).ClearContents 
    End If
  End If
End Sub
 
Nog beter.

Toch nog een vraagje.
Hoe moet ik de koppeling maken met het kruisje en de macro ?
En kan ik er nog een bevestiging tussenzetten ?

THX
 
Laatst bewerkt:
Of zoiets ?
Code:
Sub tst()
On Error Resume Next
For Each cl In Columns(4).SpecialCells(xlCellTypeConstants)
    If MsgBox("Celwaarden wissen ?", vbOKCancel) = vbOK Then
        Application.Union(cl.Offset(, 1).Resize(, 2), cl.Offset(, 4)).ClearContents
    End If
Next
End Sub
 
Ik heb de macro in een bestandje ingevoegd.
Graag had ik toch enkele veiligheden ingebouwd.
Als nu de macro wordt gestart dan vraag hij gewoon wissen of annuleren. men ziet niet welke rij wordt gewist.
Als in de kolom nu enkele tientallen namen staan... wordt dit een beetje onoverzichtelijk, men begint steeds vooraan.
Meestal moeten er maar 1 of 2 rijen worden gewist, maar ik wil dit via een macro doen zodat er geen foutieve bewerkingen kunnen gebeuren.
Is er nog een optie mogelijk ?
 

Bijlagen

Is dit iets?
Code:
Sub tst()
On Error Resume Next
For Each cl In Columns(4).SpecialCells(xlCellTypeConstants)
   cl.Interior.ColorIndex = 3
    If MsgBox("Rij " & cl.Row & " wissen?", vbOKCancel) = vbOK Then
        Application.Union(cl.Offset(, 1).Resize(, 2), cl.Offset(, 4)).ClearContents
     End If
   cl.Interior.ColorIndex = 6
  Next
End Sub
 

Bijlagen

Hier kan ik zeker mee leven.
Dit maakt de hier toch regenachtige dag weer iets "zonniger".

Bedankt !
 
Ik zou nog graag een extra bevestiging inbouwen, probeerde het zelf maar geraak er niet uit.
Ik zou nu graag in de Msgbox het rijnummer en de inhoud van de cel in kolom F te voorschijn willen laten komen.
Zit in de knoei met de samenstelling rijnummer en waarde van de cel.


Sub tst()
On Error Resume Next
For Each cl In Columns(4).SpecialCells(xlCellTypeConstants)
cl.Interior.ColorIndex = 3
If MsgBox("Rij " & cl.Row & " wissen?", vbOKCancel) = vbOK Then

---- If MsgBox("U gaat nu de Speler (waarde van kolom F) op rij " & cl.Row & " definitief wissen?", vbOKCancel) = vbOK Then---

Application.Union(cl.Offset(, 1).Resize(, 2), cl.Offset(, 4)).ClearContents
End If
End if
cl.Interior.ColorIndex = 6
Next
End Sub
 
Code:
Sub tst()
On Error Resume Next
For Each cl In Columns(4).SpecialCells(xlCellTypeConstants)
   cl.Interior.ColorIndex = 3
    If MsgBox("U gaat nu de Speler " & cl.Offset(, 2).Value & " op Rij " & cl.Row & " wissen?", vbOKCancel) = vbOK Then
        Application.Union(cl.Offset(, 1).Resize(, 2), cl.Offset(, 4)).ClearContents
     End If
   cl.Interior.ColorIndex = 6
  Next
End Sub
 
Of hoe het eigenlijk allemaal héél simpel kan zijn.

Waarvoor nogmaals dank !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan