Loopeinde

Status
Niet open voor verdere reacties.

thijsvn

Gebruiker
Lid geworden
6 mrt 2009
Berichten
25
hoi allemaal.

Sinds gister probeer is voor mijn stagebedrijf een excel macro te maken die een ingevult document leeg moet maken. van dit document zijn enkele cellen gelocked en andere niet.

Tot nu toe had ik gemaakt:

Code:
Range("A1").Select
  Do
  
    If ActiveCell.Value > 0 Then
        If ActiveCell.Locked = False Then
        ActiveCell.ClearContents
        ActiveCell.Next.Activate
        Else: ActiveCell.Next.Activate
        End If
    Else: ActiveCell.Next.Activate
    End If
  
  Loop Until ActiveCell.Formula = "end"

End Sub

deze loop stopt alleen helaas niet als de cell waar end in staat een gelockte cell is.
Is er een manier om de routine hier wel naar te laten kijken, of beter nog dat de routine automatisch kijkt of hij een cell al en keer bekeken heeft en daarna automatisch stopt?

bij voorbaat dank,

thijs
 
thijsvn,

Ik heb even een schoon blad genomen en een paar getallen geplaatst.
Daar een paar van gelockt.
De gekleurde regel heb ik er tussen geplaatst en bij mij liet hij de gelockte cellen staan.
Het blad was uiteraard beveiligd, anders heb het beveiligen van cellen geen nut.
Code:
Sub Klien()
Range("A1").Select
  Do
  
    If ActiveCell.Value > 0 Then
        If ActiveCell.Locked = False Then
        ActiveCell.ClearContents
       [COLOR="Blue"] If ActiveCell.Locked = True Then Resume Next[/COLOR]
        ActiveCell.Next.Activate
        Else: ActiveCell.Next.Activate
        End If
    Else: ActiveCell.Next.Activate
    End If
  
  Loop Until ActiveCell.Formula = "end"

End Sub
 
Ik merk geen verschil. Maar ik denk dat ik misschien niet duidelijk ben geweest.
De cell waar end in staat is een gelockte cell. en op het moment dat de cellen gelocked zijn kunnen ze blijkbaar geen voorwaarde meer zijn voor het loopeinde. Na deze verandering blijft de macro iig tot in het oneindige doorlopen.

Inmiddels heb ik ontdekt dat dit hetzelfde doet als mijn eerste post:

Code:
  Do
  
    If ActiveCell.Value > 0 Then
    ActiveCell.ClearContents
    ActiveCell.Next.Activate
    Else: ActiveCell.Next.Activate
    End If
  
  Loop Until ActiveCell.Formula = "end"

is er niet een methode om te zeggen, doe dit (stukje code) binnen het bereik van cell x t/m y ?
gr Thijs
 
Laatst bewerkt:
thijsvn,

Maar ik denk dat ik misschien niet duidelijk ben geweest.
Ik had de vraag niet goed gelezen en denk dat je een specialist hier voor nodig heb.
Je zit nu aan de VBA kant, probeer het eens aan de Excel kant met een andere vraag stelling.
Daar worden veel macro's behandeld over verschillende onderwerpen.
Ik ben maar een amateur op dit gebied.
Suc6
 
Code:
Sub tst()
  For Each cl In UsedRange
    If cl.Locked = False Then cl.ClearContents
  Next
End Sub
 
Hoe moet ik dit stukje code dan gebruiken? want als ik het als zodanig in een macro zet krijg ik een foutmelding:

"Fout 13 tijdens uitvoering:
Typen komen niet overeen"

gr thijs

p.s. sorry voor het crossposten, maar het werd voor gesteld door iemand die hier langer zit dan ik...
 
Sorry voor dit ongemak.

het werd voor gesteld door iemand die hier langer zit dan ik
Ik had geschreven;
met een andere vraag stelling.
Bedoelde natuurlijk vraag omdat ik dit wist, men let er op en je ben niet de enige die dit doet hoor.
Het was mijn bedoeling om je te wijzen op waar er veel macro's behandeld worden.
 
Mijn welgemeende excuses. het was niet mijn bedoeling de regels te overtreden. Verkeerd gelezen. Nogmaals sorry
 
thijsvn,

Zo doet hij het bij mij wel.
Code:
Sub tst()
  For Each cl In [COLOR="Blue"]Sheets(1)[/COLOR].UsedRange
    If cl.Locked = False Then cl.ClearContents
  Next
End Sub
 
bij mij werkt het nu ook, alleen had ik dan nog een vraagje. Is het nu ook mogelijk om ipv een voorafbepaalde sheet, het op dat moment actieve sheet the pakken?

gr Thijs
 
thijsvn,

Ik zou het echt niet weten.
Zal je moeten uitproberen.
 
Code:
Sub tst()
  For Each cl In activesheet.UsedRange
    If cl.Locked = False Then cl.ClearContents
  Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan