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

Kolommen tonen en verbergen op basis actief geselecteerde cel

Status
Niet open voor verdere reacties.

Marcelklimt

Gebruiker
Lid geworden
3 feb 2013
Berichten
15
In dit forum staan diverse oplossingsrichtingen voor het voorwaardelijk maken van het tonen van een kolom of een rij. Ik kwam met name niet verder met twee onderdelen 1) Hoe worden de voorwaardelijk verborgen kolommen weer getoond en 2) Ik wil de voorwaarde afhankelijk maken van de actieve geselecteerde cel, mits daarbij in kolom B iets is ingevuld. Wel dient daarbij in acht te worden genomen dat zolang ik in dezelfde rij het voorwaardelijk tonen en verbergen niet wordt aangepast. Pas nadat ik weer een andere cel selecteer in een andere rij moet er opnieuw worden gekeken naar het voorwaardelijk deel van de formule. De bedoeling is dat als ik in kolom B "Ophoger" selecteer dat kolommen L t/m R worden verborgen. Zodra ik echter "Oversluiter kies moeten de kolommen S:Z worden verborgen. Tevens moeten de andere kolommen dan weer zichtbaar worden. Bijgevoegd een bestandje met daarin in vba een oplosisngsrichting.

Code:
Private Sub worksheet_change(ByVal Target As Range)
            If ActiveCell = "Ophoger" Then Columns("l:r").Hidden = True
            If ActiveCell = "Ophoger" Then Columns("s:z").Hidden = False
            If ActiveCell = "Oversluiter" Then Columns("s:z").Hidden = True
            If ActiveCell = "Oversluiter" Then Columns("l:r").Hidden = False
End Sub

De wijzigingen treden echter alleen op indien ik de keuze ophoger of oversluiter weer wijzig, hoe kan ik ervoor zorg dragen dat puur bij het selecteren van de betreffende cel dit ook wordt gedaan
 

Bijlagen

Laatst bewerkt door een moderator:
Maak eens gebruik van:
Code:
Private Sub worksheet_[COLOR=#FF0000]selection[/COLOR]change(ByVal Target As Range)
en in de code:
Code:
if target.column = 2 then .....
 
HSV,
Jouw idee gaat de goede kant uit, maar de vragensteller wil dat er zowel bij selectie van een cel (dan kan er al wat in staan, dat ongewijzigd kan blijven), als bij wijziging van een cel wat gebeurt. Dan moeten m.i. beide mogelijkheden worden opgenomen. Bijgaande bijlage, die nog niet volmaakt is, gaat in die richting.
 
Zo had ik het ook begrepen @zapatr. :thumb:
Misschien had het woordje "ook" er tussen gemoeten.
 
HSV, de berichten volgden elkaar nogal snel op.
Waarschijnlijk haaft sylvester-ponte het ook zo begrepen.
Als de vragensteller er maar mee geholpen is (in dit geval met verenigde krachten), daar gaat het om.
 
Super mooie oplossing, dank u wel heren dit wordt op prijs gesteld. Dit functioneert perfect. Rest mij slechts nog 1 onderdeel;

Indien ik nu niet in kolom B sta maar bijvoorbeeld in een andere kolom dan wil ik dat hij naar kolom B kijkt en indien daar iets is ingevuld dienen de jusite kolommen te worden getoond of te worden verborgen. Indien er niet is ingevuld dienen alle kolommen te worden getoond. Met dit laatste onderdeel heb ik ene spreadsheet die op het moment dat je in een rij staat altijd de juiste vragen toont en de rest verbergt. :):):):):)
 
Nu je de macro's hebt, zou je dat toch zelf moeten kunnen.
Heb je eigenlijk al wat geprobeerd?
Aanwijzing: als de macro niet alleen moet werken in kolom B maar ook in andere kolommen, dan breid je dat bereik uit.
 
Laatst bewerkt:
Nu je de macro's hebt, zou je dat toch zelf moeten kunnen.
Heb je eigenlijk al wat geprobeerd?
Aanwijzing: als de macro niet alleen moet werken in kolom B maar ook in andere kolommen, dan breid je dat bereik uit.

Hoi Zapatr, ja dat heb ik geprobeerd en het uitbreiden lukt wel in de spreadsheet, wat mij echter niet lukt is dat als ik in de rij sta maar niet iop kolom b dat de macro dan toch de juiste kolommen verbergt of toont, kan jij aangeven in welke regel ik dan moet kijken , het aanpassen lukt mij wel, ben nu een uurtje bezig en kom daar toch niet uit
 
Wat heb je dan precies gedaan / aangepast aan de code?
 
Wat heb je dan precies gedaan / aangepast aan de code?

Hij is nu als volgt


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Deze macro is geschreven door Zapatr
If Not Intersect(Range("B2:B998"), Target) Is Nothing Then
Cells.Interior.ColorIndex = 0
Columns("A:F").Hidden = False
Columns("H:N").Hidden = False
Columns("P:S").Hidden = False
Columns("W:Y").Hidden = False
Columns("AA:AK").Hidden = False
Columns("AQ:EM").Hidden = False
With Target
.Rows.EntireRow.Interior.ColorIndex = 19
.Interior.ColorIndex = 6
End With
Select Case Target.Value
Case "Doorstromer"
Columns("BQ:BW").Hidden = True
Case "Friba-Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Kleine verhoging zonder advies"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Generatiehypotheek"
Columns("BQ:BW").Hidden = True
Case "Onderhoud OMH-C"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overbrugging"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overig"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overwaarde/Opeet"
Columns("BB:BP").Hidden = True
Case "Ophoger"
Columns("BQ:BW").Hidden = True
Case "Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Starter"
Columns("BQ:BW").Hidden = True
End Select
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Deze macro is geschreven door Zapatr
If Not Intersect(Range("B2:B998"), Target) Is Nothing Then
Cells.Interior.ColorIndex = 0
Columns("A:F").Hidden = False
Columns("H:N").Hidden = False
Columns("P:S").Hidden = False
Columns("W:Y").Hidden = False
Columns("AA:AK").Hidden = False
Columns("AQ:EM").Hidden = False
With Target
.Rows.EntireRow.Interior.ColorIndex = 19
.Interior.ColorIndex = 6
End With
Select Case Target.Value
Case "Doorstromer"
Columns("BQ:BW").Hidden = True
Case "Friba-Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Kleine verhoging zonder advies"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Generatiehypotheek"
Columns("BQ:BW").Hidden = True
Case "Onderhoud OMH-C"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overbrugging"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overig"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overwaarde/Opeet"
Columns("BB:BP").Hidden = True
Case "Ophoger"
Columns("BQ:BW").Hidden = True
Case "Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Starter"
Columns("BQ:BW").Hidden = True
End Select
End If
End Sub
 
Edit: vorig gepost bericht verwijderd, omdat er niog wat aangepast moest worden. Hierbij een nieuw bericht.

Wat schreef ik in mijn vorig bericht? Dit:
Aanwijzing: als de macro niet alleen moet werken in kolom B maar ook in andere kolommen, dan breid je dat bereik uit.
Daar zie ik in jouw 'aanpassing' niets van terug.
En als je mijn macro goed bestudeerd had dan had je gezien dat, vóórdat de macro's wat doen, alle kolommen in het van toepassing zijnde bereik zichtbaar worden gemaakt. Ook dat doe je niet in jouw 'aanpassing'.
Onderstaande is uit de losse pols en niet getest, want aangezien je geen bestand meestuurde...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Deze macro is geschreven door Zapatr
If Not Intersect(Range("B2:EM1000"), Target) Is Nothing Then
Cells.Interior.ColorIndex = 0
Columns("A:EM").Hidden = False
With Target
.Rows.EntireRow.Interior.ColorIndex = 19
.Interior.ColorIndex = 6
Select Case .Value
Case "Doorstromer"
Columns("BQ:BW").Hidden = True
Case "Friba-Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Kleine verhoging zonder advies"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Generatiehypotheek"
Columns("BQ:BW").Hidden = True
Case "Onderhoud OMH-C"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overbrugging"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overig"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overwaarde/Opeet"
Columns("BB:BP").Hidden = True
Case "Ophoger"
Columns("BQ:BW").Hidden = True
Case "Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Starter"
Columns("BQ:BW").Hidden = True
End Select
End With
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Deze macro is geschreven door Zapatr
If Not Intersect(Range("B2:EM1000"), Target) Is Nothing Then
Cells.Interior.ColorIndex = 0
Columns("A:EM").Hidden = False
With Target
.Rows.EntireRow.Interior.ColorIndex = 19
.Interior.ColorIndex = 6
Select Case .Value
Case "Doorstromer"
Columns("BQ:BW").Hidden = True
Case "Friba-Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Kleine verhoging zonder advies"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Generatiehypotheek"
Columns("BQ:BW").Hidden = True
Case "Onderhoud OMH-C"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overbrugging"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overig"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overwaarde/Opeet"
Columns("BB:BP").Hidden = True
Case "Ophoger"
Columns("BQ:BW").Hidden = True
Case "Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Starter"
Columns("BQ:BW").Hidden = True
End Select
End With
End If
End Sub
 
Dag Zapatr, Tja en dan ben je vier uur verder je ogen tollen je in je kop en nog doorgrond ik het niet. VBA is toch wel specialistisch, chapeau hiervoor. Het werkt, echter het laatste onderdeel krijg ik toch niet voor elkaar. Ik heb van alles geprobeerd, bij worksheet_selectionchange heb ik na if not intersect aangegeven welke kolommen getoond moesten worden en welke niet, dat werkte niet, uiteraard heb ik geoefend met de range, werkte niet. Per saldo werkt het en worden de juiste kolommen getoond als je de cel in kolom B gaat staan, ga je echter in kolom c en verder staan, dan worden alle kolommen weer zichtbaar en dit is nou net niet de bedoeling omdat de invuller dan weer alle vragen te zien krijgt. Kan jij helpen?
 

Bijlagen

Laatst bewerkt:
Vier uur vind ik helemaal niet lang hoor, ik had in het verleden soms weken nodig voor ik iets doorhad.
Probeer onderstaande code en bekijk in je eigen sheet of EM die ik als laatste kolom heb gekozen, gewijzigd moet worden (in BW wellicht). Omdat je in je verschillende voorbeelden verschillende kolommen gebruikte, ben ik daar niet zeker van. Maar: eerst proberen zonder wijzigingen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Deze macro is geschreven door Zapatr
If Not Intersect(Range("B2:EM998"), Target) Is Nothing Then
Cells.Interior.ColorIndex = 0
Columns("A:EM").Hidden = False
With Range("B" & Target.Row)
.Rows.EntireRow.Interior.ColorIndex = 19
.Interior.ColorIndex = 6
Select Case .Value
Case "Doorstromer"
Columns("BQ:BW").Hidden = True
Case "Friba-Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Kleine verhoging zonder advies"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Generatiehypotheek"
Columns("BQ:BW").Hidden = True
Case "Onderhoud OMH-C"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overbrugging"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overig"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overwaarde/Opeet"
Columns("BB:BP").Hidden = True
Case "Ophoger"
Columns("BQ:BW").Hidden = True
Case "Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Starter"
Columns("BQ:BW").Hidden = True
End Select
End With
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Deze macro is geschreven door Zapatr
If Not Intersect(Range("B2:EM998"), Target) Is Nothing Then
Cells.Interior.ColorIndex = 0
Columns("A:EM").Hidden = False
With Range("B" & Target.Row)
.Rows.EntireRow.Interior.ColorIndex = 19
.Interior.ColorIndex = 6
Select Case .Value
Case "Doorstromer"
Columns("BQ:BW").Hidden = True
Case "Friba-Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Kleine verhoging zonder advies"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Generatiehypotheek"
Columns("BQ:BW").Hidden = True
Case "Onderhoud OMH-C"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overbrugging"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overig"
Columns("BQ:BW").Hidden = True
Case "Onderhoud Overwaarde/Opeet"
Columns("BB:BP").Hidden = True
Case "Ophoger"
Columns("BQ:BW").Hidden = True
Case "Oversluiter"
Columns("BQ:BW").Hidden = True
Case "Starter"
Columns("BQ:BW").Hidden = True
End Select
End With
End If
End Sub
 
Laatst bewerkt:
Zapatr alle eer naar jou, dit was de oplossing, hij werkt perfect. Ik heb vierkante ogen van het zoeken en merk dat ik nu een ernstig vitaminetekort heb ontwikkelt, maar de oplossing is daar. Alle credits hiervoor,:D zorgt voor een perfect functionerend document. Bedankt.:D:D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan