Cellen leegmaken

Status
Niet open voor verdere reacties.

Tweety1

Gebruiker
Lid geworden
6 mrt 2013
Berichten
637
Ik ben opzoek naar een vba die cellen leegt op basis van:
Als er in kolom F "Toets Digitaal" of "Test (digital)" voorkomt dan de eerste cel laten staan en de rest van de cellen leeg maken totdat in kolom B de tekst veranderd. In kolom F staat de uitkomst zoals het moet zijn.


Voorbeeld
 

Bijlagen

  • Voorbeeld.xlsx
    9,6 KB · Weergaven: 30
Deze in F2 en dan doortrekken:
PHP:
=ALS(D1<>D2;D2;"")

Als ik je goed begrijp.
 
Waarom maak je je het moeilijker als nodig.

Begin gewoon in A1 en sluit de kolommen aan elkaar.
Nu krijg je dus van die rare codes zoals onderstaand.

Code:
Sub hsv()
With Cells(1).CurrentRegion.Resize(, 4)
  .AutoFilter 3, "Toets Digitaal"
  .Offset(1).SpecialCells(12).Offset(1, 2).ClearContents
  .AutoFilter 3, "Test (digital)"
  .Offset(1).SpecialCells(12).Offset(1, 2).ClearContents
  .AutoFilter
 End With
End Sub
 
Ik snap dat het handiger is om in A1 te beginnen alleen staan daar al gegevens.
Het gaat echter om kolom B en D. Kolom A en C zijn namelijk al gevuld
 
Dan heb je het verkeerde bestand geplaatst, want de code heeft nu een aanpassing nodig.
 
Sorry. Ik had de kolommen die niet relevant waren weggelaten.

Voorbeeld aangepast
 

Bijlagen

  • Voorbeeld1.xlsx
    10,1 KB · Weergaven: 28
Laatst bewerkt:
IK weet nu niet of jou nu de tekst in kolom D wilt aanpassen of in kolom F wilt vullen.
Dit doet het eerste:
Code:
For i = 2 To Range("B2").CurrentRegion.Rows.Count
    If Cells(i, 2) = Cells(i - 1, 2) Then Cells(i, 4).ClearContents
Next i
 
Of:
Code:
Sub hsv()
With Cells(1).CurrentRegion
  .AutoFilter 4, "Toets Digitaal"
  .Offset(1).SpecialCells(12).Offset(1, 3).ClearContents
  .AutoFilter 4, "Test (digital)"
  .Offset(1).SpecialCells(12).Offset(1, 3).ClearContents
  .AutoFilter
 End With
End Sub
 
Ik denk dat je gelijk hebt, maar TS kan kiezen :)
 
Erg duidelijk is het niet Ed.

Misschien wel zo.
Code:
Sub hsv()
With Cells(1).CurrentRegion.Columns(4)
  .AutoFilter 1, "Toets Digitaal"
  .Offset(1).SpecialCells(12).Offset(1).SpecialCells(12).ClearContents
  .AutoFilter 1, "Test (digital)"
  .Offset(1).SpecialCells(12).Offset(1).SpecialCells(12).ClearContents
  .AutoFilter
 End With
End Sub
 
We wachten af.
Tijd voor een Affligem :D
 
Goed idee, ik neem iets uit een kruikje. :thumb:
 
Die heb ik er naast staan!
Op je gezondheid :D
 
@ edmoor,
Het werkt bijna goed alleen laat de vba alleen de eerste regels staan. De bedoeling is dat alleen de eerste regels Toets Digitaal of Test (digital) worden getoond en dat alle andere regels ongewijzigd mogen staan.

@ hsv
VBA werkt goed op 1 puntje na. Zodra in kolom B de tekst veranderd maar de tekst in kolom D is zelfde is als de tekst daarboven dan verwijderd de vba deze ook. Deze moet namelijk wel blijven staan.

Voorbeeld (Zie regel 87)
 

Bijlagen

  • Voorbeeld2.xlsm
    21 KB · Weergaven: 30
Zo dus?
Code:
For i = 2 To Range("B2").CurrentRegion.Rows.Count
    Select Case Cells(i, 4)
        Case "Toets Digitaal", "Test (digital)"
            If Cells(i, 2) = Cells(i - 1, 2) Then Cells(i, 4).ClearContents
    End Select
Next i
 
Dan zou ik het in een array zetten @edmoor.
Code:
Sub hsv()
Dim sv, i As Long
sv = Cells(1).CurrentRegion
For i = 2 To UBound(sv)
  Select Case sv(i, 4)
    Case "Toets Digitaal", "Test (digital)"
      If sv(i, 2) = sv(i - 1, 2) Then sv(i, 4) = ""
    End Select
 Next i
 Cells(1).Resize(UBound(sv), UBound(sv, 2)) = sv
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan