Automatisch verborgen rijen toevoegen

Status
Niet open voor verdere reacties.

tombeerke

Gebruiker
Lid geworden
8 jan 2017
Berichten
280
Ik heb een tabblad aangemaakt als "INPUTBLAD" en wil nu het volgende bekomen, wie kan me op weg helpen ?

van rij 10 tot rij 309, deze heb ik deze verborgen,
ik wil nu als cel C9 is ingevuld, rij 10 automatisch verschijnt
Als dan cel c10 is ingevuld, rij 11 automatisch verschijnt, enz

bedankt alvast

Tom
 
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Dim R As Range
Set R = Range("C9:C309")
For Each cell In R
If cell.Value <> "" Then cell.Offset(1, 0).EntireRow.Hidden = False
Next cell
Application.EnableEvents = True
End Sub
 
of

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("C9:C308")) Is Nothing Or Target.Count > 1 Then Exit Sub
  Application.EnableEvents = False
  Rows(Target.Row).Offset(1).Hidden = Target = ""
  Application.EnableEvents = True
End Sub
 
ik doe waarschijnlijk iets verkeerd, maar krijg niet het gewenste resultaat bij beide oplossingen.

maar vooraleerst "bots" ik op een ander probleem, als ik de rijen 10 tot 309 verberg, blijven mijn besturingselementen allemaal staan ?
hoe kan ik deze koppelen aan mijn rij, en mee verbergen

Ik doe even bestand uploaden

Tom
 
Laatst bewerkt:
Een Worksheet_Change hoort in de module van het betreffende blad.
 
En over welke besturingselementen heb je het? In jouw OP heb je het over Rij 10 t/m 309 die verborgen zijn. In het bestand is geen van deze rijen verborgen. Verdiep jezelf eens in het gebruik van VBA ipv elk ideetje dat je hebt hier als vraag te plaatsen.
 
In mijn bestand had ik van rij 9 tot 309, telkens een besturingselement aan een cel gekoppeld, dit voor kolom F G H (waardoor er WAAR of ONWAAR als uitkomst kwam, en dat dan via een formule liet berekenen), hetgeen prima werkte

je aangeleverde code, voor automatisch toevoegen van verborgen rijen, werkte perfect, waarvoor dank :thumb:

Echter wat is er gebeurd, bij het verbergen van de rijen zijn alle besturingselementen "OPEEN GEPLAATST" thv rij 310 ?

Dit is voor mijn een ramp:evil::evil::evil:, nu moet ik deze allemaal handmatig terugplaatsen naar de gekoppelde cel :shocked:

Dus het verbergen van rijen die gekoppeld zijn met besturingselementen, is NIET mogelijk

En ik ben niet de expert in VBA, maar door hulp van jullie, leer ik telkens bij, en dat is mijn bedoeling, maar lukt niet op 1-2-3 .....

bedankt alvast

Tom
 
Zet de kenmerk eens op de eerste optie (verplaatsing en formaat gerelateerd aan cellen).
 
heb de code aangepast

omdat het blad beveiligd is heb ik volgend bijgevoegd (anders liep de code vast) (code werkte wel prima zonder beveiliging)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  [COLOR="#0000FF"]ActiveSheet.Unprotect[/COLOR]
  If Intersect(Target, Range("C15:C308")) Is Nothing Or Target.Count > 1 Then Exit Sub
  Application.EnableEvents = False
  Rows(Target.Row).Offset(1).Hidden = Target = ""
  Application.EnableEvents = True
  [COLOR="#0000FF"]ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False[/COLOR]
End Sub

Krijg geen foutmelding, maar code sluit niet af met beveiligd blad ?

Update:
De rijen C-D-E zijn op het beveiligd blad, NIET beveiligd, en mijn cursor springt naar rechts (Dit omwille ik werk met een barcodescanner)
Als het blad dus beveiligd is, springt na een scan, de cursor steeds mooi terug naar rij C

Als ik met code van hierboven werk, kom ik uit in rij F en status onbeveiligd blad
 
Laatst bewerkt:
Lijkt me logisch dat als je iets invoert buiten C15:C308 dat je dan naar 'Exit Sub' gaat, en je blad dan unprotect is.
 
Inderdaad :thumb:
heb gewoon aangepast naar c15:e309 en werkt prima

kan soms zo simpel zijn :eek::eek::eek:

wil nu hetzelfde doen voor de rijen van C358 : E652

ik had iets geprobeerd maar lukte niet :shocked:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ArtikelUit (Target)
ArtikelIn (Target)
End Sub
 
 
Private Sub ArtikelUit(Target As Range)
ActiveSheet.Unprotect
  If Intersect(Target, Range("C15:E308")) Is Nothing Or Target.Count > 1 Then Exit Sub
  Application.EnableEvents = False
  Rows(Target.Row).Offset(1).Hidden = Target = ""
  Application.EnableEvents = True
  ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False
End Sub

Private Sub ArtikelIn(Target As Range)
ActiveSheet.Unprotect
  If Intersect(Target, Range("C358:E652")) Is Nothing Or Target.Count > 1 Then Exit Sub
  Application.EnableEvents = False
  Rows(Target.Row).Offset(1).Hidden = Target = ""
  Application.EnableEvents = True
  ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False
End Sub
 
Ik dacht even dat je het begreep (het woordje 'simpel')

Je unprotect staat een regel te hoog.
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 
If [COLOR=#0000FF][SIZE=4]Not [/SIZE][/COLOR]Intersect(Target, [COLOR=#0000FF]Range("C15:E309"))[/COLOR] Is Nothing [COLOR="#0000FF"]and[/COLOR] Target.Count [COLOR="#0000FF"]=1[/COLOR] Then
[COLOR=#0000ff]  Unprotect[/COLOR]
    Application.EnableEvents = False
    Rows(Target.Row).Offset(1).Hidden = Target = ""
    Application.EnableEvents = True
  Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
 [COLOR=#0000ff]end if[/COLOR]
End Sub
 
Laatst bewerkt:
Blijkt niet zo SIMPEL :(:(:(

kan niet meer volgen, Harry

Was de code die ik had opgesteld, in de goede richting ?

Kheb nu dit geprobeerd maar loopt volledig VERKEERD en zit volledig vast

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

ArtikelUit (Target)
ArtikelIn (Target)
End Sub
 
 
Private Sub ArtikelUit(Target As Range)
If Not Intersect(Target, Range("C15:E309")) Is Nothing And Target.Count = 1 Then
  Unprotect
    Application.EnableEvents = False
    Rows(Target.Row).Offset(1).Hidden = Target = ""
    Application.EnableEvents = True
  Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
 End If
End Sub

Private Sub ArtikelIn(Target As Range)
If Not Intersect(Target, Range("C358:E652")) Is Nothing And Target.Count = 1 Then
  Unprotect
    Application.EnableEvents = False
    Rows(Target.Row).Offset(1).Hidden = Target = ""
    Application.EnableEvents = True
  Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
 End If
End Sub
 
Sorry voor vorige reactie, dat noemt men de bal volledig mislaan !

heb even je code overgenomen voor bereik c15:e309

dat werkt nu perfect
 
Zo kun je meerdere rijen verbergen.

Incl. tweede bereik.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [COLOR=#0000ff]Range("C15:E309", "C358:E652"))[/COLOR] Is Nothing Then
   Unprotect
  Application.EnableEvents = False
  Range(Target.Address).Offset(1).EntireRow.Hidden = Application.CountIf(Range(Target.Address), "") = Target.Count
  Application.EnableEvents = True
  Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
End If
End Sub
 
alles grondig getest en werkt PRIMA

Een rariteit, de rijen 358:652 zijn verborgen, als ik nu inscan voegt hij steeds perfect een rij toe, echter als ik de cel terug leeg maak, verwijderd hij de rij automatisch (hetgeen perfect is), anderzijds als ik dan kom aan rij 358 (die oorspronkelijk verborgen was) en delete daar de inhoud, dan verberg hij ook rij 357, en nadien 356, enz .... (op zich kan dit geen kwaad, maar is rariteit)

ik heb de voorwaardelijke opmaak, ingesteld zoals vorige week bekomen, hetgeen perfect werkt (groen/rood)
Ik wil nu deze sorteren met de groene bovenaan
sorteren.JPG

formules zijn juist ingesteld, doch doet hij het niet ?
 
Die rariteit wil ik wel eens testen in je voorbeeldbestand.
Welke cellen je beveiligd hebt weet ik niet; als je 358 t/m 652 verborgen en rij 357 hebt beveiligd kun je niet bij rij 358 komen.

Kan ik ook je Vw opmaak even testen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan