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

Macro om naamgebieden te verbergenn in een ander werkblad (zelfde document)

Status
Niet open voor verdere reacties.

aat21

Gebruiker
Lid geworden
22 jun 2004
Berichten
21
Hallo Excel guru's,

Ik heb een macro vraagje. Ik heb een document met twee werkbladen;

1. selectie werkblad

Hier moet de ik een waarde uit een drop-down kiezen en vervolgens op een knop klikken*

2. uitkomst werkblad
Hier staan een aantal kolommen met titels en de kolommen samen hebben ook een naam.

*Wat moet er nu gebeuren als er op de knop geklikt wordt;
De waarde die gekozen is uit de dropdwonlijst komt overeen met de naam van een range kolommen op het uitkomst werkblad. Nu moeten deze kolommen + de kolommen die de naam ALGEMEEN hebben, alleen nog getoond worden. Dus alle andere kolommen moeten op verborgen gezet worden.

Ik heb een voorbeeldbestandje bijgevoegd.

Ik hoop echt heel erg dat iemand van jullie me hierbij kan helpen. In ieder geval super bedankt voor de moeite!!

Met vriendelijke groet,

Joost

Bekijk bijlage Voorbeeld.xlsx
 
Joost,

Plaats de volgende code in een module en verbindt die aan de knop

Code:
Sub Selecteer()
Dim n
Sheets("Kolommenblad").Range("A1:N1").EntireColumn.Hidden = True
For Each n In Sheets("Kolommenblad").Range("A1:N1")
    If Left(UCase(n.Value), Len(n.Value) - 1) = Sheets("Selectieblad").Range("C5") Then
    
    n.EntireColumn.Hidden = False
    End If
Next n
Sheets("Kolommenblad").Activate
End Sub

Plaats de onderstaande code in de VBA-editor bij het werkblad Kolommanblad

Code:
Private Sub Worksheet_Deactivate()
Sheets("Kolommenblad").Range("A1:N1").EntireColumn.Hidden = False
End Sub
 
Werkt als een zonnetje

Hi Matjan,

Het werkt als een zonnetje!

Bedankt!!

Mvgr,

Joost
 
Toch nog een vraagje

Hi Matjan,

Ik heb toch nog een vraagje; in de voorbeeld excel en jouw macro gaan we ervan uit dat de kolommen die sowieso getoond moeten worden uiterst rechtsstaan, maar nu wil men juist die kolommen uiterst links (dus de eerste kolommen) komen te staan.

En dan werkt de macro niet meer. Wat moet ik aanpassen in de Macro of het nu weer werkend te krijgen?

Mijn dank is groot!

Mvgr,

Joost

p.s. ik heb zelf ook al wat geprobeerd door de ranges aan te passen en in de 5de regel code Right i.p.v. Left neer te zetten, maar dit gaf niet de oplossing.
Ik ben niet zo bekend met macro's dus wellicht is het antwoord heel simpel :-)
 
Code:
Sub Selecteer()
Dim n
Sheets("Kolommenblad").Range("E1:R1").EntireColumn.Hidden = True
For Each n In Sheets("Kolommenblad").Range("E1:R1")
    If Left(UCase(n.Value), Len(n.Value) - 1) = Sheets("Selectieblad").Range("C5") Then
    
    n.EntireColumn.Hidden = False
    End If
Next n
Sheets("Kolommenblad").Activate
End S

en

Code:
Private Sub Worksheet_Deactivate()
Sheets("Kolommenblad").Range("E1:R1").EntireColumn.Hidden = False
End Sub
 
Ik snap het nu, maar ik ben opzoek naar iets anders

Hi,

Ik snap de macro nu, maar jij kijkt naar de namen in regel 1 en die vergelijk je met de gekozen waarde uit de dropdown. Echter dit is niet helemaal de bedoeling.

Ik heb bijvoorbeeld de kolommen Klaas1, Klaas2, Klaas3, Klaas4 en Klaas5 als geheel ook een naam gegeven; KLAAS (als je alle 5 de kolommen selecteerd, kun je dat linksboven in het werkblad zien).

En eigenlijk wil ik dus dat de macro een vergelijk maakt tussen de gekozen waarde uit de dropdown en dan alleen die kolommen laat zien met diezelfde gebiedsnaam.

Als dit niet mogelijk is, dan hoor ik het ook graag hoor.
Vind het al hartstikke fijn dat je me helpt!!

Mvgr,

Joost
 
zoiets dan:

Code:
Sub Selecteer1()
Dim p,q As Range
Dim Cl As Range
Sheets("Kolommenblad").Activate

Set Cl = Sheets("Kolommenblad").Range("A1", Range("A1").End(xlToRight))
Cl.EntireColumn.Hidden = True

Set p = Names(Sheets("Selectieblad").Range("C5").Value).RefersToRange
Set q = Names("Algemeen").RefersToRange
With p
.EntireColumn.Hidden = False
End With
With q
.EntireColumn.Hidden = False
End With
Sheets("Kolommenblad").Cells(1, 1).Activate

End Sub
 
Helemaal TOP!!!

Matjan,

Hij is nu helemaal zoals ik hem wil hebben, thnx man!

Goede jaarwisseling!

Grt,

Joost
 
@ Matjan
Mooi voorbereidend werk :thumb:, en nu iets gestroomlijnder :D
Code:
Sub Selecteer1()
With Sheets("Kolommenblad")
    .Activate
    .UsedRange.EntireColumn.Hidden = True
    With Application
        .Names([Selectieblad!C5].Value).RefersToRange.EntireColumn.Hidden = False
        .Names("Algemeen").RefersToRange.EntireColumn.Hidden = False
    End With
    .Cells(1, 1).Activate
End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan