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

VBA Dit kan eenvoudiger volgens mij (LOOP maken)

Status
Niet open voor verdere reacties.

Weust

Gebruiker
Lid geworden
8 dec 2011
Berichten
38
Heren,

Ik heb een sheet met in de eerste rij van elke kolom (250 rijen, A1 t/m IP250) de waarde "HIDE" of "SHOW"
Als er "HIDE" staat wil ik de kolom verbergen d.m.v. een macro.

Zelf kom ik tot dit werkende voorbeeld:

Code:
If Sheets("INFO_BLAD").Range("A1").Value = "HIDE" Then Sheets("INFO_BLAD").Range("A1").Select
If Sheets("INFO_BLAD").Range("B1").Value = "HIDE" Then Sheets("INFO_BLAD").Range("B1").Select
If Sheets("INFO_BLAD").Range("C1").Value = "HIDE" Then Sheets("INFO_BLAD").Range("C1").Select
If Sheets("INFO_BLAD").Range("D1").Value = "HIDE" Then Sheets("INFO_BLAD").Range("D1").Select
If Sheets("INFO_BLAD").Range("E1").Value = "HIDE" Then Sheets("INFO_BLAD").Range("E1").Select
  etc...

    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ColumnWidth = 0

Maar als ik het op deze manier doe moet ik 250 verschillende regels gaan maken en er word gebruik gemaakt van "select" wat volgens mij ook beter vervangen kan worden door ".EntireColumn.Hidden = False"

Is er iemand die mij te hulp kan schieten? :cool:
 
Gelukkig ben ik een heer!

Code:
Sub LoopRange()

    Dim rCell As Range
    Dim rRng As Range

    Set rRng = Sheet1.Range("A1:I1")

    For Each rCell In rRng.Cells
        If rCell.Value = "hide" Then
            Columns(rCell.Column).Select
            Selection.EntireColumn.Hidden = True
        End If
    Next rCell

End Sub

Ron
 
Super!

Heren en vooral de dames bedankt!

Edit:
Heb er dit van gemaakt, select verwijderd en '.ColumnWidth = 0' werkt blijkbaar sneller als .EntireColumn.Hidden = False

Code:
Sub LoopRange()

    Dim rCell As Range
    Dim rRng As Range

    Set rRng = Sheets("INFO_BLAD").Range("BS1:LI1")

Sheets("INFO_BLAD").Columns("BP:LI").EntireColumn.Hidden = False

    For Each rCell In rRng.Cells
        If rCell.Value = "HIDE" Then
            Columns(rCell.Column).ColumnWidth = 0
        End If
    Next rCell

End Sub
 
Laatst bewerkt:
'heer'lijk al die overbodige code:

Code:
Sub M_snb()
    Sheets("INFO_BLAD").Columns("BP:LI").Hidden = False

    For Each cl In Sheets("INFO_BLAD").Range("BS1:LI1")
        If cl.Value = "HIDE" Then cl.Column.ColumnWidth = 0
    Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan