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

Status
Niet open voor verdere reacties.

Saturnus twente

Gebruiker
Lid geworden
4 aug 2010
Berichten
33
Hallo

IK heb volgende VBA

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then Target.EntireRow.Hidden = Target.Value = 0
End Sub

deze werkt perfect als ik met de handmatig en 0 of 1 in kolom A tik.

maar nu wordt de waarde in kolom A bepaald door een formule =IF(B2>0;1;0)
en dan werkt bovenstaand VBA niet meer.

wie weet of kan me helpen aan een oplossing.

b.v.d. Gert-Jan
 
hallo Gert-Jan,

als een waarde veranderd doordat een functie een andere waarde krijgt wordt:
Private Sub Worksheet_Change(ByVal Target As Range)
niet getriggerd.

je kan dus in dit geval kijken naar de invoerplek van de functie ( B2 in dit geval ).

dan krijg je zoiets:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [B2]) Is Nothing Then
        Rows(1).Hidden = Target = 0
    End If
End Sub
 
Hallo Sylvester-Ponte,

Dank u voor uw andwoord,
maar het werkt niet helemaal zoals ik bedoeld had...
Het gaat om elke regel in colom A en elke regel kijkt naar de zelfde regel in kolom B ( als de regel in colom A dus 0 is dan moet de hele regel hidden. en als hij weer 1 is dan weer un hidden.)
maar de waarde in kolom B wordt ook bepaald door een formule.

als ik naar de bron kijk ( is een andere sheet in zelfde document) dan werkt het wel maar de bron verschuift de hele tijd. een formule die ik in kolom B gebruik is deze

=IF(INDIRECT("Invullijst!$A$9")=1;INDIRECT("Invullijst!$C$9");0)

op deze pagina voeg en verwijder ik automatisch rijen toe en zijn mn onderste 2 rijen de totalen die mee schuiven.

ook deze 0 ziet hij niet in bovenstaande formule.


dus zoek ik een formule die dus de uitkomst van een cel ziet in rij A en dan als die uitkomst dus 0 is de hele regel hidden zet.. en als die 1 is weer unhidden maakt.

ik hoop dat u of iemand anders me hiermee kunt helpen.. ( had gehoopt met bovenstaande formule)

b.v.d. Gert-Jan
 
Ik denk dat als je een tabel (VBA: listobject ) gebruikt, je geen code meer nodig hebt.
Een voorbeeldbestand zou veel kunnen verduidelijken.
 
Bekijk bijlage Materiaallijst test bestand.xlsdank je ik hoor graag meer

hier het bestand ( ik wat dingen weg gehaald omdat er namen instonden.)

het is dus de bedoeling dat ik de sheet materiaal lijst uit wil printen.
maar dat hij de legeregels ( de 0 waarde in kolom A of mag ook B) niet print..( of hide)

ik had dus de bovenstaan de VBA al in sheet materiaal staan


ik hoor graag

Groet Gert-Jan
 
hallo als je deze toevoegt aan je "workbook" code pagina:
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Call verberg
End Sub

Sub verberg()
    Dim R As Range, Totaal As Range
    With Sheets("Materiaallijst ")
        For Each R In Intersect(.Columns(1), .UsedRange)
            If R <> 1 Then
                If Totaal Is Nothing Then
                    Set Totaal = R
                Else
                    Set Totaal = Union(Totaal, R)
                End If
            End If
        Next R
        Totaal.EntireRow.Hidden = True
    End With
End Sub
dan worden de rijen zonder 1 verborgen voor het printen
 
Laatst bewerkt:
Hallo Sylvester,

bedankt het werkt goed
hide van de regels gaat goed..

maar nu als er daarna iets veranderd aan het document dus een regel colom A wel waarde 1 heeft pas deze VBA het niet weer aan...( wel als ik nog een regel 0 maak)

hij kan dus wel meer hiden maar niet weer unhidden zeg maar..

b.v.d. Gert-jan
 
hallo, als je deze code:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row <= 4 Then ActiveSheet.UsedRange.EntireRow.Hidden = False
End Sub
in het code blad van je materiaal blad zet en in een van de bovenste 4 rijen klikt,
dan wordt alles weer zichtbaar.
de oude Worksheet_Change code kun je verwijderen
 
Laatst bewerkt:
De Private Sub Worksheet_Change(ByVal Target As Range) wordt niet getriggerd door veranderende cellen door een herberekening (calculate actie), alleen maar door handmatige veranderingen;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan