Ik zoek iets om de niet beschermde cellen leeg te maken op een specifiek tabblad.

Status
Niet open voor verdere reacties.

gaggie

Gebruiker
Lid geworden
13 apr 2012
Berichten
101
Hallo,

Ik heb onderstaande code gevonden, maar het lijkt of deze blijft lopen.
De range op dat tabblad is A1 -> AH457 en daar zitten ook beschermde cellen bij en samengevoegde cellen( die zijn niet beschermd)

HTML:
Option Explicit
Sub ClearUnlockedCells()
    Dim WorkRange As Range
    Dim Cell As Range
    Set WorkRange = ActiveSheet.UsedRange
    For Each Cell In WorkRange
        If Cell.Locked = False Then Cell.Value = ""
    Next Cell
End Sub

Hoop dat iemand mij kan helpen.
 
Volgens mij doet 'ie het goed, maar ik zou hem zelf iets anders schrijven:
Code:
Sub ClearUnlockedCells()
    Dim Cell As Object
    For Each Cell In ActiveSheet.UsedRange
        If Cell.Locked = False Then Cell.Value = ""
    Next Cell
End Sub
 
test deze eens
Code:
Sub ClearUnlockedCells()

    For Each Cell In Range("A1: AH457")
        If Cell.Locked = False Then Cell.Value = ""
    Next Cell
End Sub
 
test deze eens
Code:
Sub ClearUnlockedCells()

    For Each Cell In Range("A1: AH457")
        If Cell.Locked = False Then Cell.Value = ""
    Next Cell
End Sub

Compileerfout, een variabele is niet gedefinieerd. in de eerste regel sub clear......
 
Dat komt omdat je er zelf nog Option Explicit bij hebt staan, zoals het hoort.
Jean Paul zal dat niet in de module hebben staan.
 
Heb je die van mij al getest?
 
Ok, maar er eens dit van:

Code:
Sub ClearUnlockedCells()
    Dim Cell As Object
    Application.ScreenUpdating = False
    For Each Cell In ActiveSheet.UsedRange
        If Cell.Locked = False Then Cell.Value = ""
    Next Cell
    Application.ScreenUpdating = True
End Sub

Als het dan nog niet goed werkt kun je beter even je document plaatsen.
 
Gaggie,

De reden waarom de macro zo langzaam is ligt waarschijnlijk niet aan de macro zelf maar aan het bestand.
Waarschijnlijk zijn er een groot aantal formules opgenomen op het tabblad. Iedere keer dat er dan ook iets
in het tabblad wijzigt (bijvoorbeeld het leegmaken van een cel) worden alle formules opnieuw berekend, dit neemt
zoveel tijd in beslag dat het lijkt alsof de macro traag is.
De oplossing is waarschijnlijk om voor het begin van de macro het herberekenen op handmatig te zetten, de macro
te laten lopen en daarna het herbereken weer aan te zetten. Let op na het aanzetten van het herberekenen wordt
iedere formule in het hele bestand opnieuw berekend wat weer wat tijd kan kosten maar het zal in ieder geval veel tijd
schelen.
Het handmatig uit en aan zetten van de herberekening doe je met:
Code:
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

Veel Succes.
 
Gaggie,

De reden waarom de macro zo langzaam is ligt waarschijnlijk niet aan de macro zelf maar aan het bestand.
Waarschijnlijk zijn er een groot aantal formules opgenomen op het tabblad. Iedere keer dat er dan ook iets
in het tabblad wijzigt (bijvoorbeeld het leegmaken van een cel) worden alle formules opnieuw berekend, dit neemt
zoveel tijd in beslag dat het lijkt alsof de macro traag is.
De oplossing is waarschijnlijk om voor het begin van de macro het herberekenen op handmatig te zetten, de macro
te laten lopen en daarna het herbereken weer aan te zetten. Let op na het aanzetten van het herberekenen wordt
iedere formule in het hele bestand opnieuw berekend wat weer wat tijd kan kosten maar het zal in ieder geval veel tijd
schelen.
Het handmatig uit en aan zetten van de herberekening doe je met:
Code:
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

Veel Succes.

Ik heb dit in de vba gezet, manual aan het begin en automatic aan het eind. In de vba van Edmoor.
Inderdaad dat werkt.

Ik heb namelijk heelveel index formules staan in dit werkblad.

Hartelijk dank.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan