• 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 verbergen/tonen

Status
Niet open voor verdere reacties.

math1

Gebruiker
Lid geworden
26 nov 2005
Berichten
50
Ik wil in een worksheet kolommen in de range AB t/m BO verbergen als er in de cel op rij 3 geen waarde staat. Ik heb onderstaande formule gevonden maar deze is maar voor 1 bepaalde kolom.
Is er een manier om deze formule b.v. met een for next loop zo aan te passen dat hij voor alle kolommen in het gebied AB t/m BO geldt, of moet ik voor elke kolom apart deze formule invoeren?

Code:
[I]Private Sub worksheet_change(ByVal Target As Range)
            If Range("AB3").Value = 0 Then Columns("AB").Hidden = True
            If Range("AB3").Value > 0 Then Columns("AB").Hidden = False
End Sub[/I]

Groetjes, Math
 
Laatst bewerkt door een moderator:
Het is mij niet duidelijk over welke cel in rij 3 je het hebt.....

Code:
Private Sub worksheet_change(ByVal Target As Range)
  Range("AB:BO").hidden=target=""
End Sub
 
Hallo snb,

Met rij 3 bedoel ik als bv in cel AB3 geen waarde staat kolom AB verborgen wordt, zo ook als cel AC3 leeg is kolom AC verborgen wordt enz. Tot kolom BO. Dus als de cel in rij 3 leeg is moet betreffende kolom verborgen worden.

Math
 
Als er geen formules in staan.

Code:
Sub hsv()
 Range("AB3:BO3").SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden = True
End Sub
 
In die cel (..3) staat een formule die het aantal gevulde cellen in betreffende kolom telt (=AANTAL(..4: ..300).
Als dit aantal 0 is moet de kolom automatisch verborgen worden, komt er wel een aantal in zou de kolom weer zichtbaar moeten zijn. De gegevens in de kolommen komen via een formule tot stand, dus worden hier niet handmatig ingevoerd.

Met de formule die ik heb (zie vraag) werkt dit uitstekend, maar deze geldt maar voor 1 kolom.
Ik kan dan wel voor alle 40 kolommen deze formule apart invoeren, maar ik denk dat dit ook eenvoudiger kan, helaas ontbreekt mij die kennis.

Gr. Math
 
Na veel zoeken en gepuzzel (al doende leert men) heb ik het opgelost middels een Commandbutton en daaronder volgende formule geplaatst:

Code:
[I]Private Sub CommandButton1_Click()

Dim I As Byte
   
   For I = 28 To 78   'kolommen welke hidden/unhidden kunnen worden

       If Cells(3, I).Value = 0 Then Columns(I).EntireColumn.Hidden = True
       If Cells(3, I).Value > 0 Then Columns(I).EntireColumn.Hidden = False

   Next

End Sub[/I]

Als ik de knop activeer wordt er per kolom, in dit sheet van AB t/m BZ (28 to 78) in de cel op regel 3 gekeken of daar een waarde staat en aan de hand van die waarde de kolom verbergen of zichtbaar maken.

Gr. Math
 
Laatst bewerkt door een moderator:
Code:
[I]Private Sub CommandButton1_Click()

Dim I As Byte

   For I = 28 To 78   'kolommen welke hidden/unhidden kunnen worden
[COLOR=#FF0000]
       Columns(I).EntireColumn.Hidden = iif(cells(3,I) > 0 ,false,true)[/COLOR]


   Next

End Sub[/I]
 
of
Code:
Private Sub CommandButton1_Click()
   For j = 28 To 78
       sheets("sheet1").Columns(j).Hidden = sheets("sheet1").Cells(3,j) = 0
   Next
End Sub
 
Heren,

Ik heb beide oplossingen geprobeerd en beide werken prima.
Omdat dit in meerdere sheets wordt gebruikt heb ik het enigszins aangepast door bij de code van snb sheets("sheet1") te vervangen door ActiveSheet of in de code van HSV ActiveSheet. toe te voegen.
De code in een module gezet zodat ik op ieder blad waar dit gebruikt wordt alleen de knop hoef te plaatsen.

Heel hartelijk dank voor deze oplossingen.

Gr. Math
 
Als ik de commandButton gebruik gaan keurig de rijen weg. Maar hoe zou ik deze middels een knop weer kunnen unhidden?
 
Dim eersteleeg

Sub Hide()
Range("f8").Select
Selection.End(xlToRight).Select



nieuwe = ActiveCell.Column
Cells(8, nieuwe + 2).Select

eersteleeg = ActiveCell.Address

Range(eersteleeg & ":ZZ8").SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden = True

End Sub

Sub UnhideCols()
Columns("A:A").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.EntireColumn.Hidden = False

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan