Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 10 van 10

Onderwerp: Afwisselend diverse rijen laten zien/verbergen

  1. #1
    Senior Member
    Verenigingslid

    Geregistreerd
    8 februari 2012
    Vraag is opgelost

    Afwisselend diverse rijen laten zien/verbergen

    Naar aanleiding van post #4 (van VenA) in deze thread https://www.helpmij.nl/forum/showthr...ilterde-waarde
    werd ik getriggerd om het volgende aan jullie voor te leggen.

    Heb geprobeerd de code te begrijpen c.q. te vertalen naar rijen. Is mij helaas nog niet gelukt.

    Onderstaande code werkt al jaren prima (uiteraard gaat het laten zien van alle rijen supersnel) maar omgekeerd duurt het rij voor rij aflopen om te kijken of deze verborgen moet worden wat langer).
    Natuurlijk niet een echt probleem maar toch.

    Toelichting:
    Range("toggle_rows") heeft afwisselend de waarde 0 of 1. Afhankelijk van wat de laatste actie was.
    Range("check_printing") geeft een waarde 1 als alles klopt, waarde 0 als er ergens in kolom E een #N/B voorkomt.
    De waarde in kolom E (0 of 1) wordt bepaald door formules. Volledig afhankelijk van diverse factoren. Een patroon is er gewoon niet".
    De Timer heb ik in het voorbeeld toegevoegd.

    Code:
    Option Explicit
    Option Private Module
    Dim LastRow As Long
    Dim iRow As Integer
    Dim tTimer As Single
    
    Sub Rows_Visible_Invisible() 'TOGGLE: Laat afwisselend diverse rijen zien/verbergen van blad PUBLICATIE"
        tTimer = Timer
        LastRow = Cells(Rows.Count, 5).End(xlUp).Row  'in de regel rond de 2500 rijen
        
        Application.ScreenUpdating = False
            Sheets("PUBLICATIE").Activate
            If Range("toggle_rows") = 1 Then
                Rows(2 & ":" & LastRow).EntireRow.Hidden = False
                Range("toggle_rows") = 0
                Application.Goto Cells(1, 1), Scroll:=True
            Else
                If Range("check_printing") = 1 Then
                    For iRow = 2 To LastRow
                        If Range("E" & iRow) = 0 Then
                            Rows(iRow).EntireRow.Hidden = True
                        End If
                    Next
                    Range("toggle_rows") = 1
                    Application.Goto Cells(1, 1), Scroll:=True
                Else:
                    MsgBox Title:="HELPMIJ.NL", Buttons:=vbInformation, prompt:="OEPS!" & vbNewLine & "Iets klopt er niet." _
                    & vbNewLine & vbNewLine & "Ckeck kolom E op #N/B. Kijk in kolom A naar het wedstrijdnummer en zoek de wedstrijd op in het tabblad" _
                    & vbNewLine & "OVERZICHT." & vbNewLine & vbNewLine & "Corrigeer de fout en probeer het opnieuw."
                End If
            End If
        Application.ScreenUpdating = True
        MsgBox "Uitgevoerd in " & Round(Timer - tTimer, 2) & " sec.", vbInformation, Application.Username
    End Sub
    In de regel / gemiddeld staan er in kolom E ca. 2500 nullen of eenen.
    In het voorbeeld heb ik een paar 0 en 1 in de eerste rijen gezet.

    Hoe kan ik versnellen c.q. de code van VenA toepassen?
    Map1.xlsm
    Groeten,
    Trainers

  2. #2
    Giga Honourable Senior Member HSV's avatar
    Geregistreerd
    18 juli 2008
    Met autofilter (zet in cel E1 een koptekst).
    Met een togglebutton van de activeX-controls.

    Code:
    Private Sub ToggleButton1_Click()
    If ToggleButton1 Then
       Columns(5).AutoFilter 1, 1, , , 0
     Else
       ShowAllData
     End If
    End Sub
    ____________
    Met vriendelijke groet,
    Harry

    Lag nooit om de keuzes van dien vraauw, bist ter zulf aine van....
    (Grunnegs-Gronings)

  3. #3
    Mega Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Ik zie niets terug van de code uit het vorige draadje. Het verbergen van kolommen is wat lastiger dan het verbergen van rijen. Er bestaan geen kolomfilters.

    Als je de code begrepen had dan had je er zoiets van kunnen maken
    Code:
    Sub VenA()
      Dim r As Range
      For Each cl In Columns(5).SpecialCells(2, 1)
        If cl.Value = 0 Then
          If r Is Nothing Then Set r = cl Else Set r = Union(r, cl)
        End If
      Next cl
      If Not r Is Nothing Then r.EntireRow.Hidden = True
    End Sub
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  4. #4
    Senior Member
    Verenigingslid

    Geregistreerd
    8 februari 2012
    @VenA:
    Als je de MsgBox bedoelt klopt dat. De code van deze Sub is al enkele jaren oud en had ik nog niet aangepast.

    Als je de code begrepen had dan had je er zoiets van kunnen maken
    Zoals ik al schreef in #1 Heb geprobeerd de code te begrijpen c.q. te vertalen naar rijen. Is mij helaas nog niet gelukt.

    Beiden mijn dank. Ik ga eens kijken hoe ik e.e.a. kan inbouwen in het originele bestand.
    Groeten,
    Trainers

  5. #5
    Mega Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Volgens mij heb ik nergens over een msgbox. Als je code niet begrijpt dan gaat het nog een klus worden om het in te bouwen in het originele bestand.
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  6. #6
    Senior Member
    Verenigingslid

    Geregistreerd
    8 februari 2012
    Sorry VenA maar jij schreef "Ik zie niets terug van de code uit het vorige draadje." en ik dacht dat je de MsgBox bedoelde. Excuus.
    Groeten,
    Trainers

  7. #7
    Senior Member
    Verenigingslid

    Geregistreerd
    8 februari 2012
    Heb er dit van gemaakt:
    Code:
    For Each cl In Columns(5).SpecialCells(xlCellTypeFormulas, 1)
    en cl gedeclareerd als Variant.

    Werkt als een zonnetje. Mijn dank.
    Groeten,
    Trainers

  8. #8
    Mega Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Dan is Dim cl al voldoende.
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  9. #9
    Senior Member
    Verenigingslid

    Geregistreerd
    8 februari 2012
    Groeten,
    Trainers

  10. #10
    Giga Honourable Senior Member HSV's avatar
    Geregistreerd
    18 juli 2008
    Dim cl as range.

    De autofiltermethode lijkt me de beste.
    ____________
    Met vriendelijke groet,
    Harry

    Lag nooit om de keuzes van dien vraauw, bist ter zulf aine van....
    (Grunnegs-Gronings)

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren