Selection.EntireRow.Hidden = True

Status
Niet open voor verdere reacties.

Sjoef

Gebruiker
Lid geworden
12 mei 2009
Berichten
270
Hallo, ik heb een werkblad waar een aantal rijen middels een waarde verborgen moeten worden.

code:

Range("A10:I19").Select
Selection.EntireRow.Hidden = True

niets ingewikkelds dus. In excell 2002 werkt deze code zonder problemen. Maar in excell 2010 gaat het mis. Als ik stap voor stap de code doorloop zie ik dat de selectie keurig gedaan wordt en zo ook het verbergen. Daarna gaat de code niet verder maar wordt de sub waar de code instaat opnieuw gestart. Waardoor er dus een soor loop onstaat. Iemand enig idee?
 
Waar staat deze code in? in principe werkt de code prima (hoewel ik nooit zelf selection zou gebruiken). Bevind er zich ook nog ergens een selectionchange / change macro?

ps:

Code:
range("a10:i19").entirerow.hidden = true 'gebruik van selection is eigenlijk nooit nodig, en werkt vertragend + bug-gevoelig
 
Hallo, ik ben niet zo'n excell expert. Maar omdat ik redelijk thuis ben in VBA hebben ze mij gevraagd "even" te kijken. Die select had ik even gedaan om te kijken of dat werkelijk goed ging. Dit is de orginele code:

Private Sub Worksheet_Calculate()

If Not ActiveSheet.Name = "Invoer sheet" Then Exit Sub
If [p24] = ONWAAR Then Exit Sub


If [d9] = "Ja" Then
ActiveSheet.Unprotect ("geheim")
Rows("10:22").Select
Selection.EntireRow.Hidden = True

en dan gaat bij de Selection.EntireRow.Hidden = True de code weer bij Private Sub Worksheet_Calculate()
beginnen. En an zit hij in een loop en gaat het beeld staan te knipperen.
 
Ja dat is het gevaar van van events zoals selectionchange, change en calculate.

Als er ergens een formule is die SUBTOTAAL gebruikt (of een degelijke andere formule) zal een hide / unhide weer een nieuwe event triggeren waardoor de code nogmaals loopt en nogmaals etc.

Je kunt testen of de cel al "hidden" is en dan een exit sub doen, maar beter is in dit geval om specifiek naar een verandering de kijken van p24/d9
 
domme vraag.....(jaja, ik weet het) maar hoe kan ik de events van die cellen bekijken?
 
Events zijn op werkblad niveau. Als er ergens een cel wordt veranderd zal het change event van de sheet aangeroepen worden met in de "target" de cel(len) die is aangepast.

De boven gebruikte "calculate" wordt telkens aangeroepen als er ergens om wat voor reden een hercalculering op het werkblad plaatsvind.
 
Ik heb de code in een sub gezet en niet meer in calculate. Vervolgens die sub aanroepen. Probleem opgelost. Dank voor het meedenken en de hulp.:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan