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

Knop op tabblad a, die tabblad e,f,g,h,i en j print zonder 0-regels

Status
Niet open voor verdere reacties.

Fruitschaal

Nieuwe gebruiker
Lid geworden
24 apr 2012
Berichten
1
Beste heren en dames van het Help-mij forum,

Ik ben momenteel bezig met een excelbestand die werklijsten maakt voor een dag/week. Op tabblad 'a' wordt ingevuld hoeveel van elk product wordt gemaakt bij de juist productgroep (6 productgroepen). Op tabblad e,f,g,h,i,j komt (afhankelijk van de productgroep) het aantal eruit en de benodigdheden om tot dit product te komen. Tablad e,f,g,h,i en j zijn de werklijsten. Niet alle producten worden dagelijks gemaakt dus er zijn vaak regels met 0/ lege cellen.

Wat ik graag wil is: een knop op tabblad 'a' die de werklijsten ( op de verschillende tabbladen) uit print zonder 0 regels.

Ik ben momenteel zo ver gekomen dat ik op de geselecteerde tabblad een lijst krijg die de 0-regels weg laat. Dit is echter alleen voor het actieve tabblad. Ik krijg het niet omgezet naar de eerste pagina en het daadwerkelijke printen.

Deze volgende code werk ik nu mee, maar deze is dus voor één tabblad. Een ander probleem is dat de regels verborgen blijven niet niet automatisch terug komen.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cl In [D2:D6]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D8:D13]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D15:D18]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D21:D27]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D29:D32]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D34:D43]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D45:D51]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D53:D57]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D59:D64]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D66:D75]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D77:D84]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D86:D94]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D96:D103]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
For Each cl In [D105:D110]
    cl.EntireRow.Hidden = IIf(cl.Value = 0, True, False)
Next
 End Sub

Hulp is van harte welkom.

Met vriendelijke groeten,
Max
 
Hi Max,

Een voorbeeldbestandje (met fictieve gegevens), doch met de juiste lay-out werkt handiger, dan moeten we niet alles gaan herbouwen.

Bedankt,

Joske
 
Hallo Joske,

Hier de topic-starter ( Fruitschaal).Op een of andere manier kom ik niet meer ingelogd op het oorspronkelijke account, ook niet na wachtwoordherstel.

Ik was inderdaad al aan een voorbeeld bezig. Bij deze in de bijlage.

Groeten,
Max
 

Bijlagen

Max,

Aan volgende programma heb je genoeg,
Code:
Public Sub PrintZonderLegeRegels()

Dim nTeller As Integer
Dim cl As Range

For nTeller = 1 To 6
    With Sheets(Choose(nTeller, "E", "F", "G", "H", "I", "J"))
        For Each cl In .Range("D2:D110")
            cl.EntireRow.Hidden = IIf(cl.Value > 0, False, IIf(cl.Value = "", False, True))
        Next cl
        .PrintOut
        .Rows.Hidden = False
    End With
Next nTeller

End Sub

Ik laat de macro zes keer doorlopen met de verschillende sheet namen e,f,g,h,i,j.
Dan controleer ik of in kolom D een 0 voorkomt, dit kan in een keer als je er voor zorgt dat ook de
lege regels gezien worden als cellen waarbij de regels niet verborgen mogen worden.
Daarna geef ik de opdracht om de sheet te printen (Printout) waarna ik alle regels weer zichtbaar maak.

Veel Succes.
 
Beste Elsendoorn,

Bedankt voor de reactie. Deze code is een stuk korter, dat is is fijn. Ik heb nog een vraag m.b.t enkele aanpassingen. Ik wil ook tabblad A printen ( met alle regels), en 1 ander tabblad zonder 0-regels, maar de waardes staan in een andere rij. Daarna wil ik terug naar het eerste tabblad ( cel A1 ) Klopt de volgende code:

Code:
Public Sub PrintZonderLegeRegels()
Next
 Sheets("A").Select.PrintOut
 
Dim nTeller As Integer
Dim cl As Range

For nTeller = 1 To 6
    With Sheets(Choose(nTeller, "E", "F", "G", "H", "I", "J"))
        For Each cl In .Range("C2:C110")
            cl.EntireRow.Hidden = IIf(cl.Value > 0, False, IIf(cl.Value = "", False, True))
        Next cl
        .PrintOut
        .Rows.Hidden = False
    End With
Next nTeller

For nTeller = 1 To 1
    With Sheets(Choose(nTeller, "L"))
        For Each cl In .Range("B2:B75")
            cl.EntireRow.Hidden = IIf(cl.Value > 0, False, IIf(cl.Value = "", False, True))
        Next cl
        .PrintOut
        .Rows.Hidden = False
    End With
Next nTeller

End Sub

Ik heb 'm getest en het werkt niet. Ik krijg ook niet de sprong terug naar het eerste tabblad, cel A1 er in verwerkt. Hulp is nog steeds welkom :-).
De oorspronkelijk code van Elsendoorn werkt overigens wel goed. Bedankt daarvoor.

Groeten,
Max
 
Laatst bewerkt:
Oorspronkelijke code van Elsendoorn werkt wel, mijn aanpassingen daarentegen werken niet mee. Zie edit in vorig bericht.
 
Max,

Ik heb de code een beetje aangepast.
Als deze nog niet werkt, kan je dan zeggen wat er niet werkt, want de vermelding "het werkt niet" zegt natuurlijk niet echt veel.

Code:
Public Sub PrintZonderLegeRegels()
Sheets("A").PrintOut
 
Dim nTeller As Integer
Dim cl As Range

For nTeller = 1 To 6
    With Sheets(Choose(nTeller, "E", "F", "G", "H", "I", "J"))
        For Each cl In .Range("c2:c110")
            cl.EntireRow.Hidden = IIf(cl.Value > 0, False, IIf(cl.Value = "", False, True))
        Next cl
        .PrintOut
        .Rows.Hidden = False
    End With
Next nTeller

For nTeller = 1 To 1
    With Sheets(Choose(nTeller, "L"))
        For Each cl In .Range("B2:B75")
            cl.EntireRow.Hidden = IIf(cl.Value > 0, False, IIf(cl.Value = "", False, True))
        Next cl
        .PrintOut
        .Rows.Hidden = False
    End With
Next nTeller

Sheets("A").Cells(1, 1).Select
End Sub

Joske
 
Goedemorgen Joske,

Ik heb jouw code gebruikt en een beetje aangepast. Zo heb ik de opmaak van "L" aangepast zodat de waardes binnen de C2:C110 vallen. Zo hoeft er geen extra coderegel in.
De laatste regel van het 'teruggaan naar blad 1' werkt niet, maar ik heb hem zelf aangepast. Zie de code voor het uiteindelijke resultaat.

Code:
Public Sub PrintenWerklijst()
Sheets("A").PrintOut
Sheets("N").PrintOut

Dim nTeller As Integer
Dim cl As Range

For nTeller = 1 To 7
    With Sheets(Choose(nTeller, "E", "F", "G", "H", "I", "J", "L"))
        For Each cl In .Range("C2:C150")
            cl.EntireRow.Hidden = IIf(cl.Value > 0, False, IIf(cl.Value = "", False, True))
        Next cl
        .PrintOut
        .Rows.Hidden = False
    End With
Next nTeller

ActiveWorkbook.Sheets("A").Activate
Range("A1").Select
End Sub

Bedankt voor de medewerking Joske en Elsendoorn. Mijn probleem is opgelost. :-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan