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

Gegevens uit meerdere bladen tegelijk automatisch wissen

Status
Niet open voor verdere reacties.

ErikdV

Gebruiker
Lid geworden
16 jun 2011
Berichten
81
Ik heb een werkblad met meerdere bladen, genaamd 1 t/m 9.
De werkbladen bevatten allemaal dezelfde kolommen.
Voor elk blad wil ik automatisch de cellen wissen in kolom F, die de waarde 0 bevatten (vanaf F2, F1 is een header).
Ik heb een macro, die het voor een afzonderlijk blad doet.

Sheets("1").Activate
ActiveSheet.Range("F2", ActiveSheet.Range("F2").End(xlDown)).Select
Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Hoe kan ik deze macro zo aanpassen, dat ik het voor Sheets 1 t/m 9 kan doen?
 
maak dit er van:
Code:
for sht=1 to 9
     Sheets(sht).Activate
     ActiveSheet.Range("F2", ActiveSheet.Range("F2").End(xlDown)).Select
     Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
next sht
 
Vermijd 'select' en 'activate' in VBA

Code:
sub M_snb()
  for j=1 to 9
    sheets(j).columns(6).replace "0",""
  next
end sub
 
Dank voor de snelle reactie. Ik had zelf ook al gestoeid met een for/next loop, maar kwam er niet uit door aanhalingstekens wel/niet enz.
Ik snap ook dat je ''activate' en 'select' liever niet gebruikt. Dat ik het wel gebruik komt omdat het van een microsoft-site afkomstig is.

Verder heb ik onderaan ook een overzichtje staan met 0-waarden, die niet gewist mogen worden. Door een lege rij onder de bovenste helft worden deze niet gewist.
De 'kale' VBA-code wist alle 0-waarden in de gehele kolom.
Als je hiervoor een alternatief hebt, hoor ik het graag.
 
Gebruik dan deze code:

Code:
Sub NulVervangen()
    For j = 1 To 9
        ilast = Sheets(j).Range("F1").End(xlDown).Row
        Sheets(j).Range("F1").Resize(ilast).Replace "0", ""
    Next
End Sub

Rebmog
 
Code:
sub M_snb()
  for j=1 to 9
    sheets(j).columns(6).specialcells(2).areas(1).replace "0",""
  next
end sub
 
Bedankt voor deze compacte VBA-code. Hij doet precies wat ik wil.

sub M_snb()
for j=1 to 9
sheets(j).columns(6).specialcells(2).areas(1).replace "0",""
next
end sub.

Nu heb ik ook een kolom B, met daarin een aantal samengevoegde cellen.
De 1e rij bevat kolomkoppen.
Onder de samengevoegde cellen staat een lege rij.

Ik heb de VBA-code als volgt aangepast:

Sub tijdleeg2()
For j = 1 To 9

Sheets(j).Columns(2).SpecialCells(2).Areas(1).ClearContents

Next
End Sub

Nu krijg ik een mfoutmelding '1004: Er zijn geen cellen gevonden'. Er wordt geen enkele cel leeggemaakt. Dit is dus duidelijk niet de oplossing.

Ik heb ook de uitgebreide code geprobeerd:

Sub Tijd_leegmaken()
For sht = 1 To 9
Sheets(sht).Activate
ActiveSheet.Range("B2", ActiveSheet.Range("B2").End(xlDown)).Select
Selection.ClearContents
Next sht
End Sub

Nu worden bij elk werkblad alleen de bovenste 2 samengevoegde cellen verwijderd. De macro loopt wel gewoon door.
Ik zie duidelijk iets over het hooft, maar wat?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan