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

waarschijnlijk ergens foutje in vba-code

Status
Niet open voor verdere reacties.

bowlingman

Gebruiker
Lid geworden
17 okt 2007
Berichten
433
Hallo,
Om bepaalde cellen in een sheet te wissen gebruik ik de volgende code
Code:
With Sheets("Speeldagen")
        
        For i = 3 To 893 Step 10
            .Cells(i, 1).Resize(1, 13).ClearContents
            .Cells(i + 2, 1).Resize(3, 6).ClearContents
            .Cells(i + 2, 10).Resize(3, 6).ClearContents
        Next
        
        End With
En deze werkt perfect.
Nu wil ik de code korter schrijven
Code:
With Sheets("Speeldagen")
              
        For i = 3 To 893 Step 10
            Union(Cells(i, 1).Resize(1, 13), Cells(i + 2, 1).Resize(3, 6), Cells(i + 2, 10).Resize(3, 6)).ClearContents
        Next
        End With
En deze werkt niet.
Ziet er soms iemand in de onderste code een fout staan, waardoor deze niet werkt.

Grtjs.
Armand
 
Hallo Harry,

Bedankt voor je reactie.
Inderdaad de code is degene die jij in mijn vorige vraag hebt gegeven.
Ik was daar nog eens gaan kijken en daar staat de code ook zonder puntjes voor Cells( en dat was dus wat er mis was in de code.
Werkt nu perfect.

Grtjs.
Armand
 
Zonder punten verwijst naar het actieve blad,.... met punten naar het blad tussen With - End With.
 
Hallo Harry,

Bedankt om dat nog even te melden.
Leren we weeral wat bij.

Grtjs.
Armand
 
Volgens mij kan het veel eenvoudiger. Maar dan zal je even jouw bestandje moeten plaatsen.
 
Hallo VenA,

In bijlage de sheet waarover het gaat.
De knop om te wissen heb ik op blad2 gezet.

Grtjs.
Armand
 

Bijlagen

Snellere methode.
Code:
Private Sub cmbWissen_Click()
    With Sheets("Speeldagen")
     Set c = Union(.Cells(3, 1).Resize(, 13), .Cells(5, 1).Resize(3, 6), .Cells(5, 10).Resize(3, 6))
        For i = 13 To 893 Step 10
            Set c = Union(c, Union(.Cells(i, 1).Resize(1, 13), .Cells(i + 2, 1).Resize(3, 6), .Cells(i + 2, 10).Resize(3, 6)))
        Next
     c.ClearContents
    End With
End Sub
 
Laatst bewerkt:
Hallo Harry,

Super.
Heb juist hiermee testen gedaan in al mijn bowlingprogs en inderdaad de sheet "Speeldagen" wordt hiermee wel 100 keer sneller gewist.
Bedankt.

Grtjs.
Armand
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan