Automatische Pagina-einde op basis van Celwaarde

Status
Niet open voor verdere reacties.

GervdOuweland

Gebruiker
Lid geworden
1 nov 2017
Berichten
6
Hoi allemaal,

Ik heb weer een nieuwe uitdaging die voortborduurt op mijn eerdere prutswerk. Grappig genoeg vinden de mensen op mijn werk het prachtig wat ik tot dusver heb weten te maken.

Ik moet nu pagina eindes invoegen zodat er een nieuwe pagina ontstaat zodra de waarde in een bepaalde kolom anders is van de regel erboven. Met de gedachte dat in principe alles mogelijk is ben ik eraan begonnen. Ik heb ook iets gevonden wat werkt zolang het op 1 sheet, maar op het moment dat ik dit op meerdere sheets na elkaar laat uitvoeren loopt ie vast op het 2e sheet, en dan precies op de regel waar het eerste pagina einde ingevoegd moet worden.

Code:
Sub Test()

'Zorgen dat het scherm niet knippert tijdens het uitvoeren van de macro
Application.ScreenUpdating = False

'Board 1
Sheets("Board 1").Select
ActiveSheet.ResetAllPageBreaks
    rij = 6
    kolom = 4
    celval = Cells(rij, kolom)
    Do While Cells(rij, kolom) <> ""
    If Cells(rij, kolom) <> celval Then
    Cells(rij, kolom).Select
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
    End If
    celval = Cells(rij, kolom)
    rij = rij + 1
    Loop
Sheets("Board 1").ListObjects("Tabel5").Range.AutoFilter Field:=2, Criteria1:="Board 1"
Sheets("Board 1").ListObjects("Tabel5").Range.AutoFilter Field:=4, Criteria1:=">0", Operator:=xlFilterValues
Sheets("Board 1").ListObjects("Tabel5").Range.AutoFilter Field:=5, Criteria1:=">0", Operator:=xlFilterValues
Dim Board1 As Range
    Dim Tabel100 As Range
    Set bereik = Sheets("Board 1").Range("A5:I305")
    Set Tabel100 = Sheets("Board 1").Range("A5:A305")
    bereik.Sort Key1:=Tabel100, Order1:=xlAscending, Header:=xlYes

'Board 2
Sheets("Board 2").Select
ActiveSheet.ResetAllPageBreaks
    rij = 6
    kolom = 4
    celval = Cells(rij, kolom)
    Do While Cells(rij, kolom) <> ""
    If Cells(rij, kolom) <> celval Then
    Cells(rij, kolom).Select
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
    End If
    celval = Cells(rij, kolom)
    rij = rij + 1
    Loop
Sheets("Board 2").ListObjects("Tabel53").Range.AutoFilter Field:=2, Criteria1:="Board 2"
Sheets("Board 2").ListObjects("Tabel53").Range.AutoFilter Field:=4, Criteria1:=">0", Operator:=xlFilterValues
Sheets("Board 2").ListObjects("Tabel53").Range.AutoFilter Field:=5, Criteria1:=">0", Operator:=xlFilterValues
Dim Board2 As Range
    Dim Tabel53 As Range
    Set bereik = Sheets("Board 2").Range("A4:F304")
    Set Tabel53 = Sheets("Board 2").Range("A4:A304")
    bereik.Sort Key1:=Tabel53, Order1:=xlAscending, Header:=xlYes

End Sub

Rij 6 is de eerste rij waar een variabele voorkomt. de eerste 5 rijen bevatten algemene informatie die op elke pagina geprint word. Dit is voor elk tabblad dezelfde info, alleen staat in rij 1 een afbeelding die telkens verandert. Vooralsnog zie ik hier geen ander oplossing voor, dus ben gebonden aan aparte tabbladen. In dit voorbeeld zijn het maar 2 tabbladen, maar in de definitieve versie gaat het om ca. 25 tabbladen.

De foutmelding die ik krijg is:
Knipsel.JPG

Vraag 1: Het zou inderdaad logischer zijn om eerst te filteren en dan pas de pagebreaks in te voegen, maar dat werkt niet. Waarom niet?
Vraag 2: Waarom werkt dit in zijn geheel niet voor 2 sheets? Laat staan straks bij 25 sheets.
Vraag 3: Als ik alles in 1 tabblad kan maken, zodat de afbeelding bovenaan steeds automatisch wijzigt zou helemaal schitterend zijn. Maar of dat mogelijk is??

Op mijn vorige draadje heb ik geweldige tips en hulp gekregen. Ik hoop nu dat de stelregel "Resultaten uit het verleden..." niet op gaat.
Bij voorbaat dank voor alle hulp.

Groet Ger
 
Vertel er ook bij op welke regel in de code je die foutmelding krijgt.
 
Ik had mijn best gedaan om dat te beschrijven, maar zal proberen het nog wat ter verduidelijken. De code loopt mooi door tot er in blad "Board 2" voor de eerste keer een PageBreak ingevoegd moet worden. Ik heb 7 regels met dezelfde waarde. Bij de 8e regel moet er een pagebreak ingevoegd worden, maar hij slaat vast op de regel: " Cells(rij, kolom).Select"

Persoonlijk denk ik dat de code nog steeds naar het eerste tabblad verwijst, waar al een pagebreak is ingevoegd op diezelfde regel. (voor het testwerk heb ik de data in beide bladen gelijk gehouden)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan