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

Op 'afstand' een aanduiding sturen

  • Onderwerp starter Onderwerp starter wivoe
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

wivoe

Gebruiker
Lid geworden
25 mrt 2008
Berichten
146
Geachte helpers,

Voor m'n Excel programma wil ik een aantal (wisselend) rijen in een groep kunnen verbergen en wel die rijen waar geen bedrag in staat vermeld.
De code om de rijen te verbergen werkt op zich goed. Er zijn 20 groepen met een wisselend aantal rijen en bedragen, maar ook hebben sommige
groepen nog geen enkel bedrag in een rij.
Bovenaan elke groep is een groep aanduiding rij die moet blijven staan, zodra er in een groep, in een willekeurige rij, een bedrag is ingevuld.

Mijn bedoeling is om in de groep rij een willekeurige letter of cijfer te laten zetten zodra er in 1 van de groep rijen een bedrag komt te staan.
In het kort: - is in een groep geen enkel bedrag, dan de hele groep incl. groep aanduiding regel, verbergen.
- is in een groep in een willekeurige regel een bedrag, dan de groep aanduiding regel met de 'bedrag' regel(s) zichtbaar.

Ik heb hier op Helpmij de volgende code regels gevonden om een waarde op "afstand" aan te sturen en dat werkt perfect voor die ene regel.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = "$A$1" Then
 Range("B2").ClearContents
 If Range("A1").Value < 10 Then Range("B2") = 1
 End If
 End Sub

Er zou bij <If Target.Address = "$A$1"> Then, een verwijzing moeten komen naar $A$2 + $A$3 + $A$4 enz.
En hetzelfde bij <If Range("A1").Value < 10 Then Range("B2") = 1> een verwijzing naar ("A1" + "A2" + "A3", enz.

Is deze 'optelling' van rijen in 1 code mogelijk, of moet op elke rij de afzonderlijke code komen?

Wim
 
Plaats even een voorbeeldbestandje waarin de problematiek goed tot uitdrukking komt.
 
Dit zou zo ongeveer aan je wensen tegemoet moeten komen.
Met 2 knoppen: om regels te verbergen en weer te tonen.
Code:
Sub hiderows()
    
    Dim ar
    Dim verberggroep As Boolean
    Dim i As Long
    
    Application.ScreenUpdating = False
    ar = Cells(1, 1).CurrentRegion
    verberggroep = True
    
    ReDim verberg(UBound(ar, 1))
    
    For i = UBound(ar, 1) To 2 Step -1
        If Range("A" & i).Interior.ColorIndex <> xlColorIndexNone Then
            If verberggroep Then Range("A" & i).EntireRow.Hidden = True
            verberggroep = True
        Else
            If CInt(ar(i, 4)) = 0 Then Range("A" & i).EntireRow.Hidden = True Else verberggroep = False
        End If
    Next i
    
    Application.ScreenUpdating = True
    
End Sub

Code:
Sub unhiderows()
    
    Application.ScreenUpdating = False
    Cells(1, 1).CurrentRegion.EntireRow.Hidden = False
    Application.ScreenUpdating = True
    
End Sub
 

Bijlagen

Hallo Marcel,

Bedankt voor de moeite, ik ga ze eens proberen, maar denk niet vanavond.

Groeten Wim
 
Hallo Marcel,

Je codes werken fantastisch, nogmaals hartstikke bedankt.

Groeten, Wim
 
Hallo Marcel,

Ben wat voorbarig geweest, jouw oplossing in het Test bestand werkt perfect. Het probleem is nu
dat ik in het originele bestand een formulier heb waarin een paar CommandButtons heb gezet
om de rijen te sluiten en te openen. Knoppen plaatsen in een Formulier gaat niet, het moeten
CommandButtons zijn.

De foutmelding die in het geel wordt weergegeven is: If CInt(ar(i, 4)) = 0 Then

Van de aanhef van je code heb ik gemaakt: Private Sub CommandButton6_Click() i.p.v. de door
jouw aangegeven Sub hiderows()

Waar ben ik de fout ingegaan?

Groeten, Wim
 
Zonder voorbeeldje is het een beetje koffiedik kijken :rolleyes:

Wellicht moet je de bereiken aanvullen met het juiste werkblad en/of de code moet bij het formulier staan en niet in een gewone module.
 
Hallo Marcel,

Na vele malen proberen toch eindelijk aan de praat gekregen. Nogmaals dank.

Ik zal er een slotje opzetten.

Groet, Wim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan