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

VBA: Inhoud onbeschermde velden verwijderen

Status
Niet open voor verdere reacties.

Joost.van.Steeg

Gebruiker
Lid geworden
9 okt 2006
Berichten
138
Hoi,

Ik heb een sheet die ik regelmatig gebruik met testdata. Na het testen wil ik graag deze data weer verwijderd hebben. Hiervoor heb ik de volgende code geschreven:

Code:
  For Each c In Worksheets("Rekenschema").Range("A1:T702")
    If c.Locked = False Then
        c.Value = ""
    End If
  Next c
End Sub
Private Sub cmdSchoonMaken_Click()


De code gaat nu stuk voor stuk de cellen bij langs en als blijkt dat ze onbeveiligd zijn zet hij de inhoud op leeg. Echter is deze code zeer traag. Heeft iemand een betere oplossing?

Alvast bedankt,
 
Wat noem je zeer traag? Een paar seconden, een paar minuten, ...?
 
Een paar minuten. Ongeveer een kwart seconde per veld, en gezien de range select kun je wel na gaan hoe lang dat dan duurt.
 
En hoe lang duurt dit?

Code:
  For Each c In Worksheets("Rekenschema").Range("A1:T702")
    If c.Locked = False Then c.ClearContents
  Next c
 
Helaas ongeveer net zo traag. Zal net iets sneller zijn. Maar bedankt voor het bieden van een alternatief iig.
 
Time deze eens:

Code:
Private Sub CommandButton1_Click()
    Dim c As Range
    Application.screenupdating - false
    For Each c In Worksheets("Rekenschema").Range("A1:T702")
        If c.Locked = False Then
            c.ClearContents
        End If
    Next c
    MsgBox "klaar"
    Application.screenupdating - true
End Sub
 
Laatst bewerkt:
Hoi Radjesh,

Als ik de liggende streepjes vervang door "=", duurt het ongeveer 13 seconden voordat de klus is geklaard, een hele verbetering dus !

Dank jullie wel,
Bij deze zal ik het probleem op opgelost zetten.
 
En zet ook het berekenen eens uit:

Code:
Private Sub CommandButton1_Click()
    Dim c As Range
    Application.screenupdating = false
[B]    Application.Calculation = xlCalculationManual[/B]
    For Each c In Worksheets("Rekenschema").Range("A1:T702")
        If c.Locked = False Then
            c.ClearContents
        End If
    Next c
    MsgBox "klaar"
[B]    Application.Calculation = xlCalculationAutomatic[/B]
    Application.screenupdating - true
End Sub

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan