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

Hoe kun je met de VBA code van meerdere tabbladen kolommen laten verbergen?

Status
Niet open voor verdere reacties.

Cindy1234

Gebruiker
Lid geworden
27 mei 2013
Berichten
16
Ik heb nu in tabblad periodes een knop staan met alle periodes. Als ik dan de periodes aanklik dan verbergt hij in het volgende tabblad de betreffende periodes.

Maar ik wil het volgende graag hebben:

Bij het aanvinken van periode 4, is periode 4 bij meerdere tabbladen zichtbaar. Het vinkje blijft staan. ( Op dit moment niet)
Bij het uitvinken van periode 4 verdwijnt periode 4 bij meerdere tabbladen.

Dus als ik periode 4 aanvink. Dan moeten de kolommen van de tabbladen organisatiebeleid en personeelsbeleid de periode 4 laten zien.
Als ik periode 4 uitvink. Dan moeten de kolommen van de tabbladen organisatiebeleid en personeelsbeleid de periode 4 laten verbergen.

Bekijk bijlage Bestand Forum.xlsx
 
Ligt misschien aan mij, maar ik zie geen Checkboxen hoor
 
Super je bent geweldig!!

Nou ga ik even kijken of het lukt in het origineel bestand!
 
Ziet er mooi uit.. Maar in het originele bestand heb ik nog 20 andere tabbladen.
Waar in de code moet ik nu iets aanpassen, zodat hij deze bladen ook meepakt?
 
Tja, dat had je er niet bijgezet! Ik hoop dat het daar dezelfde kolommen zijn, maar dan kun je dit beter anders oplossen:
Code:
    Const SHEET1 As String = "Organisatiebeleid"
    Const SHEET2 As String = "Personeelsbeleid"

        'sheet 1 - Organisatiebeleid
        Set rStart = Worksheets(SHEET1).Cells(1, (i * 4) + 7)
        Set rEnd = Worksheets(SHEET1).Cells(1, (i * 4) + 10)
        Set r = Worksheets(SHEET1).Range(rStart, rEnd)
        r.EntireColumn.Hidden = Not modGlobals.arrPeriodsChecked(i)
Hierboven zul je dus ook de andere sheets moeten inzetten. ALS alle sheets dezelfde kolommen hebben, en netjes achter elkaar staan, dan zou je de constanten eruit kunnen halen en er een extra loop omheen zetten:
Code:
    for iSheet = 3 to 23 'uitgaan van 23 sheets
        Set rStart = Worksheets(iSheet).Cells(1, (i * 4) + 7)
        Set rEnd = Worksheets(iSheet).Cells(1, (i * 4) + 10)
        Set r = Worksheets(iSheet).Range(rStart, rEnd)
        r.EntireColumn.Hidden = Not modGlobals.arrPeriodsChecked(i)
    next
En anders kun je nog alle werkbladen in string zetten met een scheidingsteken en met een split weer opdelen. Maar eerst maar eens zien of dat het inderdaad over dezelfde kolommen gaat.

Tip: Het is wel handiger om in het vervolg dat soort informatie mee te geven!
 
Laatst bewerkt:
ooh sorry mijn fout!
Ik zal ervoor zorgen dat alles in dezelfde kolommen staat.

Zou je het in mijn voorbeeld kunnen toepassen?.( als het niet teveel moeite is). Ik heb namelijk zo goed als geen verstand van VBA. Dat had ik misschien ook even moeten vermelden.
Ik dacht even te kijken hoe jij het erin hebt gezet, maar het is toch lastig te bevatten.
 
Okay, nieuwe versie. Aannames:
- Sheet(2) to sheet(einde) bevat kolommen waarvoor property hide enabled/disabled moet zijn
- De kolommen staat op positie 7-10 en dan vervolgens per periode daarnaast.

Mocht de eerste aanname veranderen dan moet je hier iets aanpassen:
Code:
For iSheet = 2 To Worksheets.Count

En voor de tweede aanname:
Code:
Set rStart = Worksheets(iSheet).Cells(1, (iTerm * 4) + 7)
Set rEnd = Worksheets(iSheet).Cells(1, (iTerm * 4) + 10)

Beide stukjes code in Sub HideShowColumns op het tabblad Periodes.
 

Bijlagen

Beste René,

Bedankt voor alle hulp.

wil i term * 4 zeggen: een periode van 4 vanaf kolom 7?

En stel bij aanname 1 dat hij bijvoorbeeld van 12 tabbladen de formule moet pakken, dan moet je achter 'For iSheet = 2 To Worksheets.Count' het bladnummer invullen?

Weet jij een goede site waar ik een beetje de basiskennis van VBA kan leren?
 
(iTerm * 4) + 7)
Bij iTerm=0 (dus periode 4) komt daar 7 uit (kolom 7)
Bij iTerm=1 (dus periode 5) komt daar 11 uit (kolom 11)
Bij iTerm=9 (dus periode 13) komt daar 43 uit (kolom 43)
Bij iTerm=n (dus periode n+4) komt daar 4n+7 uit (kolom 4n+7)

Als je niet voor alle Worksheets maar voor bijvoorbeeld sheet 2 tot 14 zou willen, dan moet je de code aanpassen naar:
Code:
For iSheet = 2 To 14
Worksheets.Count bevat namelijk het totaal aantal sheets

Ik denk als je even zoekt hier op het forum dat je vanzelf een paar linkjes tegen komt. VB(A) leer je het makkelijkst door te doen, en er zijn vele oplossingen mogelijk voor een probleem, sommige wat mooier dan andere.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan