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

Pagina einde invoegen bij bepaalde tekst

Status
Niet open voor verdere reacties.

Gerald Baalhuis

Gebruiker
Lid geworden
14 jan 2006
Berichten
369
Hallo maar weer, beste forummers,

Ik heb een Excel bestand met op één werkblad omzetgegevens van zo'n 400 klanten.De omzetgegevens staan telkens onder een cel die begint met de tekst "Debiteur".
Het overzicht van de ene klant is langer of korter dan dat van de andere klant (dus je kunt niet een vast aantal regels overslaan en dan een pagina einde invoegen.
Het is met VBA vast wel mogelijk om in kolom A te zoeken naar de Cellen die beginnen met "Debiteur" en boven die cel vervolgens een pagina einde in te voegen. Maar hoe?

Alvast weer bedankt voor de moeite!

Gerald Baalhuis
 
Hoi Gerald Baalhuis,

Code:
Sub InsertPBs()
Dim rngMyRange As Range, rngCell As Range
 
With Worksheets("Blad1")
    Set rngMyRange = .Range(.Range("A1"), .Range("A65536").End(xlUp))
    'the range to work with
    For Each rngCell In rngMyRange
    'loop through the range
        If LCase(rngCell.Value) = "debiteur" Then
            .HPageBreaks.Add Before:=rngCell.Offset(0, 0)
        End If
    Next
End With
' Bron:http://www.ozgrid.com/Excel/excel-conditional-page-breaks.htm
End Sub
 
Hoi Arno,

Bedankt voor je snelle reactie. Doet ik het goed als ik jouw code kopieer naar (ALt-F11) This workbook en dan de macro start? Ik krijg dan nl een foutmelding (subscript valt buiten het bereik...)
Of moet ik de code ergens anders heen kopieren?

Joepie, zelf gevonden (voortaan eerst kijken en dan zeiken, zeg ik dan maar tegen mezelf). Blad1 heet in dit geval Sjaak. Als ik dit aanpas in de code krijg ik geen foutmelding meer.

Werkt als een sneltrein.

Hmm, ik ben nu ff door het werkblad aan het scrollen, maar het gaat toch niet helemaal goed. Op een gegeven moment krijg ik dus geen pagebreaks meer....
Nu weet ik dus niet of de macro goed loopt. Ik had voor een aantal debiteuren nl al een pagebreak ingevoegd en ik weet nu niet of de macro hier last van heeft.
Is het handig om eerst alle ingevoegde pagina einden te wissen?


Gefeliciteerd trouwens met je 'keus uit twee banen!'

Gerald
 
Laatst bewerkt:
Hoi Gerald Baalhuis,

Ik had voor een aantal debiteuren nl al een pagebreak ingevoegd en ik weet nu niet of de macro hier last van heeft.
Is het handig om eerst alle ingevoegde pagina einden te wissen?

Ik denk het wel, de macro zet namelijk ongeacht of er al een pagebreak staat, er gewoon een bij. Dus ik denk eerste alle pagebreaks verwijderen. Als het er teveel zijn, dan kan er (denk ik) wel een macro worden gemaakt die ze voor je verwijderd.

Gefeliciteerd trouwens met je 'keus uit twee banen!'
Bedankt, is nu de tweede keer dit jaar (de vorige keer was het de verkeerde keuze :confused: )
 
Arno,

Ik heb even zitten kijken naar de code, maar denk je dat het stukje
met de tekst Lcase(rngCell.Value) omgezet kan worden naar iets van left(rngCell.Value;8)?
Dit omdat de tekst dus niet alleen de tekst debiteur bevat maar ook een nummer, woonplaats enz. De tekst begint wel altijd met Debiteur dus dacht ik dat het left() commando moest lukken.

Sub InsertPBs()
Dim rngMyRange As Range, rngCell As Range

With Worksheets("Sjaak")
Set rngMyRange = .Range(.Range("A1"), .Range("A65536").End(xlUp))
'the range to work with
For Each rngCell In rngMyRange
'loop through the range
If LCase(rngCell.Value) = "debiteur" Then
.HPageBreaks.Add Before:=rngCell.Offset(0, 0)
End If
Next
End With
End Sub

Anders had ik bedacht dat ik met left() en deel() de tekst ga splitsen en vervolgens de waarden in twee cellen plak, je hebt er dan één met alleen de tekst Debiteur, dan zou de macro moeten werken, toch?

P.S. Ik krijg nu na het uitvoeren van de marco ook een melding "400", zegt jou dat wat?

P.S. 2 Zou het kunnen komen omdat er ook cellen zijn samengevoegd (met name dus die waarin de bewuste tekst staat)?


Gerald
 
Laatst bewerkt:
Hoi Gerald Baalhuis,

Code:
Sub InsertPBs()
Dim rngMyRange As Range, rngCell As Range
 
With Worksheets("Blad1")
    Set rngMyRange = .Range(.Range("A1"), .Range("A65536").End(xlUp))
    'the range to work with
    For Each rngCell In rngMyRange
    'loop through the range
        [COLOR="Red"]If Left$(LCase(rngCell.Value), 8) = "debiteur"[/COLOR] Then
            .HPageBreaks.Add Before:=rngCell.Offset(0, 0)
        End If
    Next
End With
' Bron:http://www.ozgrid.com/Excel/excel-conditional-page-breaks.htm
End Sub

Wat betreft de error 400. Het zegt me zo niets, maar ff gegoogeld en waarschijnlijk heeft het te maken met een beveiliging. Heb je je sheet beveiligd (of een paar cellen).
Ik heb het iig geprobeert met samengevoegde cellen, maar ik krijg daar geen error van
 
Oke, bedankt Spiderman, ik ga weer ff proberen en de beveiliging ed nakijken.

Je hoort van me

Gerald
 
Laatst bewerkt:
Arno,

werkt niet helemaal goed. De komma voor de 8 in de regel met left enz geeft een foutmelding. Ik heb ook al : en ; geprobeerd, maar dan krijg ik andere foutmeldingen.

Zelf had ik bedacht:
Sub test()
'
' test Macro
' De macro is opgenomen op 25-11-2006 door Gerald Baalhuis.
'
' Sneltoets: CTRL+l
'
Selection.End(xlDown).Select
Selection.End(xlDown).Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End Sub

Dit werkt, maar kan je deze macro ook in een lus zetten tot het einde van de regels (A28673) bereikt is?

Gerald
 
Om het leven makkelijker te maken.
Kun je hier je bestandje plaasten. (eventueel gevoelige info eruit strippen)
 
Arno,

Hierbij een gestript bestand. Ik heb alle samengevoegde cellen verwijderd (de opmaak dan)

Gerald

Hmm, gezipt is te groot :( Ik ga ff wat regels weghalen. rar lukt wel.

Arno, heb ff een nieuw topic geopend omdat ik een verticale pagina einde ergens heb ingevoegd. Deze wil ik graag weg hebben (kost me anders 600 velletjes papier). Heb ik dus buiten deze topic gelaten.

Gerald
 

Bijlagen

Laatst bewerkt:
Hoi Gerald Baalhuis,

Als het goed is werkt deze beter (hoop ik). Niet helemaal goed, maar ik denk goed genoeg.

Het gene dat niet werkt is de vertikale pagebreak. Als je de macro uitvoert dan moet je daarna, de vertikale pagebreak een stukje opschuiven, Het geheel is dan wel goed(denk ik)


Het probleem van de foutmelding zat hem denk ik in het feit dat er een page-header is. De macro probeerde een pagebreak te plaatsen op een plek van een header :confused:
 

Bijlagen

Hoi Gerald Baalhuis,

Als het goed is werkt deze beter (hoop ik). Niet helemaal goed, maar ik denk goed genoeg.

Het gene dat niet werkt is de vertikale pagebreak. Als je de macro uitvoert dan moet je daarna, de vertikale pagebreak een stukje opschuiven, Het geheel is dan wel goed(denk ik)

Het probleem van de foutmelding zat hem denk ik in het feit dat er een page-header is. De macro probeerde een pagebreak te plaatsen op een plek van een header :confused:

Gerald,

ik wil er gerust ook wel eens naar kijken, maar kan je eens kort en duidelijk aangeven wat er nog niet goed zit (indien het nog niet opgelost is natuurlijk.) Dus een soort van roundup van deze topic.

Wigi
 
Wigi,

Het probleem van de horizontale pagebreak is opgelost. Ik zet dit topic dus ook op opgelost. Het andere 'probleem' is het feit dat de gewone page breaks (door Excel gegenereerd) soms op een onhandige plek staan, bijv. midden in een overzicht met omzetggevens zodat een paar regels op de volgende pagina komen.
Het zou mooi zijn als er met een macro naar die Excel-pagebreaks gezocht wordt, dan gekeken wordt waar deze staat en hem zonodig te verplaatsen door aan de kop van een overzichtje een handmatige pagebreak te plaatsen.
Ik zal het voorbeeld bestand even bijvoegen (is een uitgeklede en verkleinde versie, anders is het meer dan 100 kB. Bij regel A203 heb ik de 1e 'foute' pagebreak gevonden. Zie opmerking.
Het meest perfect zou zijn als er in die gevallen dan ook nog de regel met Debiteur, nummer en naam boven komt te staan, maar dit hoeft niet perse.

Gerald
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan