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

Tabbladen verbergen door middel van een Macro

Status
Niet open voor verdere reacties.

Jurgen2807

Gebruiker
Lid geworden
27 jul 2011
Berichten
189
Hallo,

Ik heb op deze site diverse vragen EN oplossingen gezien hoe je d.m.v. een macro tabbladen kunt verbergen en weer zichtbaar kunt maken. Ik krijg ze echter niet werkend in mijn document. Ik kan wel een macro aanmaken waarin ik tabbladen 1 voor 1 kan verbergen. dit moet ik dan via de menu balk, beeld en dan marco inzetten. Dit wil ik niet.

Ik wil liever een apart tabblad waarin ik in een aparte kolom kan aangeven welk tabblad ik wel en niet wil zien.

Zie daarvoor de bijlage. In dit voorbeeld heb ik een apart tabblad opgenomen, genaamd "WEERGAVE TABBLADEN". In kolom A staan alle namen van tabbladen. In kolom B kan ik dan d.m.v. een J of een N aangeven of dat tabblad wel of niet zichtbaar gemaakt moet worden. Het liefst heb ik dat als ik een J of een N aangeef dat dan al de tabbladen automatisch verborgen of zichtbaar gemaakt worden. Ik hoef daar geen automatische knop voor. Als dat wel noodzakelijk is, dan is dat ook goed.

Vraag is ook of iemand dit exceldocument zo kan maken zoals ik dat graag zou willen. Zou het ook mogelijk zijn om kort aan te geven hoe ik dit in een ander exceldocument werkend kan krijgen?

Zie bijgaand voorbeeld.
 

Bijlagen

Deze:
Code:
Private Sub CommandButton1_Click()
    For Each sh In Range("A2:A26")
        Sheets(sh.Value).Visible = IIf(UCase(Cells(sh.Row, 2)) = "J", True, False)
    Next sh
End Sub

Wanneer je in plaats van False de waarde xlVeryHidden gebruikt kan het blad alleen vanuit VBA weer zichtbaar worden gemaakt.

Edit:
Had wat meer tijd nu en heb het voor zowel een knop als een wijziging in het blad in orde gemaakt.
Bekijk bijlage 2016 - Prognosemodel - TABBLAD VERBERGEN.xlsb

Druk op de toetscombinatie ALT+F11 om de code te bekijken.
Deze zit achter het blad "WEERGAVE TABBLADEN".
 
Laatst bewerkt:
Ietsje korter kan ook.
Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
    For Each sh In Range("A2:A26")
        Sheets(sh.Value).Visible = UCase(Cells(sh.Row, 2)) = "J"
    Next sh
End Sub
 
Inderdaad. Alleen kan je dan niet wanneer gewenst de xlVeryHidden gebruiken.
 
Hallo,

Dank hiervoor.

Mijn dank is groot. Ik zal er een slotje opzetten.
 
Laatst bewerkt:
Als je een Commandbutton plaatst in werkblad 'weergave tabbladen', dubbelklik je op de button, en plaats je daar de code.
Druk daarna op 'Ontwerpmodus' om de knop af te sluiten en werkbaar te maken.

Met een gewoon knopje voeg je een standaard module in, en verander je de code in een normale Sub en hang je de code aan het knopje met een rechtermuisklik.
Bv.
Code:
sub Knopje()
Application.ScreenUpdating = False
    For Each sh In Range("A2:A26")
        Sheets(sh.Value).Visible = UCase(Cells(sh.Row, 2)) = "J"
    Next sh
End Sub
 
Wat zou de code moeten worden bij bijgaand voorbeeld? Ik heb kolom A opgeknipt om alle opties zichtbaar te krijgen in mijn beeldscherm zonder dat ik naar beneden hoef te scrollen.

Ik heb lopen knutselen, maar ik kom er niet uit. Zou iemand deze ajb ook kunnen geven?
 

Bijlagen

Laatst bewerkt:
Je kan deze eens onder de loep nemen en het dan aanpassen.

Code:
For Each sh In Range("A2:A26")
 
Ik gebruik de volgende code:

Private Sub CommandButton1_Click()
For Each Sh In Range("A2:a47")
Sheets(Sh.Value).Visible = IIf(UCase(Cells(Sh.Row, 2)) = "J", True, False)
Next Sh
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sh As String
Sh = Cells(Target.Row, Target.Column - 1)
Sheets(Sh).Visible = IIf(UCase(Cells(Target.Row, 2)) = "J", True, False)
End Sub

Ik heb van alles al geprobeerd, maar het lukt niet :-(
 
Voor 'very hidden'

Code:
Private Sub CommandButton1_Click()
    For Each sh In Range("A2:A26")
        Sheets(sh.Value).Visible = InStr(1, "  j", sh.Offset(, 1), 1)-1
    Next
End Sub

Als je in plaats van j en n '-1' en '2' gebruikt is het nog simpeler:

Code:
Private Sub CommandButton1_Click()
    For Each sh In Range("A2:A26")
        Sheets(sh.Value).Visible = sh.Offset(, 1)
    Next
End Sub
 
Laatst bewerkt:
Indien alle bladen aanwezig zijn.
Code:
Private Sub CommandButton1_Click()
Dim cl As Range
Application.ScreenUpdating = False
    For Each cl In Range("A2:A26,D2:D26")
     If cl > 0 Then Sheets(cl.Value).Visible = UCase(cl.Offset(, 1)) = "J"
    Next cl
End Sub
 
Helaas krijg ik deze niet werkbaar. Ik kopieer deze code en het werkt niet als ik in kolom E een J of een N zet. Kan iemand ajb mijn exceldocument gebruiken? Dan kan ik de code kopieren en leer ik ook wat ik fout heb gedaan.
 
Dat heeft geen zin, omdat in het door jou geplaatste bestand al die werkbladen ontbreken.
 
Dank, hij werkt bij mij :-). Super.

Is er ook een optie waar ik niet gebruik hoef te maken van een commandbutton? Dus als ik een J en een N invoer dat deze dan automatisch wordt getoond of verborgen zonder dat ik op de commandbutton hoef te klikken? dan heb ik beide methodes. Dan weet ik ook hoe ik beide in het vervolg moet gebruikt. Kan iemand die code voor het exceldocument nog aangeven? Daarna kan deze op slot.
 
In moduleblad1 onder de commandbutton-code plaatsen.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("b2:b26,e2:e26")) Is Nothing Then
  Sheets(CStr(Target.Offset(, -1).Value)).Visible = UCase(Target) = "J"
 End If
End Sub
 
Is er ook een optie waar ik niet gebruik hoef te maken van een commandbutton? Dus als ik een J en een N invoer dat deze dan automatisch wordt getoond of verborgen zonder dat ik op de commandbutton hoef te klikken? dan heb ik beide methodes. Dan weet ik ook hoe ik beide in het vervolg moet gebruikt. Kan iemand die code voor het exceldocument nog aangeven?

Dat zit in het document in #3 ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan