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

automatisch rij leegmaken bij wijziging

Status
Niet open voor verdere reacties.

Happy83

Gebruiker
Lid geworden
18 feb 2015
Berichten
9
Ik heb een excel bestand met meerdere kolommen gevuld met data. Bij een wijziging in kolom bijvoorbeeld B1, zou ik graag willen dat de rest van de rij (dus C1 t/m J1) wordt leeggemaakt. Hoe kan ik dit instellen in excel? kan dit met formule of moet ik hier macro voor hebben. Met formules red ik me vrij goed, maar macro's wordt al een stuk moeilijker.
Hoop dat duidelijk is wat ik bedoel.
 
Het kan alleen met een formule als C1 t/m J1 leeg moeten worden bij (een) bepaalde nieuwe waarde(n) van B1.
Een formule kan niet afvangen of er iets gewijzigd is, dan moet je toch met een macro werken.

Werkwijze:
ga naar tab "Ontwikkelaars" (als je die niet hebt, dan moet je bij Excel opties aanvinken dat je die wél wilt hebben).
kies Visual Basic
kies het betreffende werkblad en druk op F7 om de code zichtbaar te maken
plak de volgende code:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("B1")) Is Nothing Then Exit Sub
Range("C1:J1").Select
Selection.ClearContents

End Sub
 
Iets bondiger geschreven.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If not Intersect(Target, Range("B1")) Is Nothing Then 
Range("C1:J1").ClearContents
end if
end sub

En dan vermoed ik dat het voor geheel de kolom B moet werken.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If not Intersect(Target, columns(2))Is Nothing Then 
 target.offset(,1).resize(,8).ClearContents
end if
end sub

Nu is bovenstaande een code met weinig bewerkingen, maar als er meer zouden zijn zou je de events beter kunnen uitschakelen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(2)) Is Nothing Then
   Application.EnableEvents = False
 Target.Offset(, 1).Resize(, 8).ClearContents
  Application.EnableEvents = True
 End If
End Sub
 
Laatst bewerkt:
Excuses voor de late reactie. Project was even blijven liggen. Bovenstaande code werkt goed. Alleen kom ik er achter dat de formules ook worden verwijderd. Ik zou dus graag alleen kolom c, d, f en h geleegd zien worden. Of dat formules blijven staan kan natuurlijk. Kunnen jullie mij nog helpen?

Alvast bedankt!
 
Code:
Target.Offset(, 1).Resize(, 8).ClearContents
aanpassen in
Code:
Target.Offset(, 1).Resize(, 8).specialcells(2).ClearContents
 
Excuses voor de late reactie. Project was even blijven liggen. Bovenstaande code werkt goed. Alleen kom ik er achter dat de formules ook worden verwijderd. Ik zou dus graag alleen kolom c, d, f en h geleegd zien worden. Of dat formules blijven staan kan natuurlijk. Kunnen jullie mij nog helpen?

Alvast bedankt!
 
Excuses voor de late reactie. Project was even blijven liggen. Bovenstaande code werkt goed. Alleen kom ik er achter dat de formules ook worden verwijderd. Ik zou dus graag alleen kolom c, d, f en h geleegd zien worden. Of dat formules blijven staan kan natuurlijk. Kunnen jullie mij nog helpen?

Alvast bedankt!
 
Happy83,

Ik zal niet zeggen dat dit de perfecte oplossing is maar volgens mij werkt het wel.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Nr = Target.Row
  If Not Intersect(Target, Columns(2)) Is Nothing Then
   Application.EnableEvents = False
    Range("C" & Nr).ClearContents
    Range("D" & Nr).ClearContents
    Range("F" & Nr).ClearContents
    Range("H" & Nr).ClearContents
 'Target.Offset(, 1).Resize(, 8).ClearContents
   Application.EnableEvents = True
 End If
End Sub
 
Hoi Allemaal,

Erg bedankt voor jullie hulp. Het is me gelukt! Ik heb uiteindelijk de code van ExcelAmateur er ingezet omdat ik bij de andere steeds fout meldingen kreeg toen ik het bestand leeg maakte voor gebruik. Kreeg steeds de melding lege cellen, maar die krijg ik nu niet meer.
Ik hoop dat ik jullie nog een keer om hulp mag vragen. In cel F5 wordt de datum van vandaag weergegeven middels een formule. In kolommen E, G, J en L staan formules die naar deze cel verwijzen. Is het mogelijk dat het bestand automatisch sorteert op datum. De datum in kolom E, G, J of L die kleiner is dan 'datum vandaag' moeten automatisch bovenaan gesorteerd worden. Ik had zelf al lopen prutsen met macro maar dan moest ik nog steeds handmatig een handeling doen. Dit kan vast ook slimmer via VBA.
 
Dat andere codes gebreken vertonen kan te maken hebben met de beperkte vraagstelling. Het is beter om even een voorbeeldbestandje te uploaden. De vraag gaat nl om bij een wijziging in kolom B de naastliggende kolommen leeg te maken. Nu blijk het weer iets complexer te worden en mogen we weer gokken?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan