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

2 rijen bij elkaar houden

Status
Niet open voor verdere reacties.

JeroenExcel1

Gebruiker
Lid geworden
25 feb 2016
Berichten
9
Goede smorgens,

Ik heb in excel 2 rijen en die moeten bij elkaar blijven op 1 pagina, de paginas lopen van boven naar benede. Is er in vba iets te coderen dat ze bij elkaar blijven?

Bvd,
 
Laatst bewerkt:
Waarom zouden die rijen ineens van plaats verschuiven?

Geef ze anders een naam.
 
Hier is het voorbeeld. Rij 77,78 en 79 moeten bij elkaar blijven op 1 pagina, terwijl de rijhoogte van alle rijen daarboven elke keer anders zijn. (let niet op de zwarte vlakken)
 

Bijlagen

  • file.png
    file.png
    44,4 KB · Weergaven: 72
Maak van die 3 rijen tekst een tekstvak, via Invoegen Tekstvak en zet daar je tekst in.

Dan blijft alles samen.
 
Volgens mij kent excel geen opties om rijen bijeen te houden bij het afdrukken. Je zal dus iedere keer moeten spelen met het pagina einde voorbeeld. Waarom maak je zoiets niet in Word? Tekst in tekstverwerker en getallen in een spreadsheet lijkt mij een logisch gebruik van een Office pakket.;)
 
De tekst in die 3 rijen wordt gegenereerd door een functie, dus de tekst blijft niet hetzelfde die kan elke keer anders zijn. Dus een tekstvak lijkt me niet de optie.
 
@Vena
Het is de bedoeling dat je in 1 sheet kan invullen wat je nodig hebt. Waaruit excel dmv functies in een andere sheet het aantal erbij zet en het plaatje.
 
In #6 heb je het erover dat de tekst gegenereerd wordt. In #7 schrijf je wat anders. Plaats het document eens met fictieve gegevens.
 
Hoop dat met dit voorbeeld het duidelijker wordt. De autosize knop is voordat die samengevoegde cellen automatisch een hoogte geeft. Het "gegevens" sheet is voor in te vullen en daaruit automatisch een afdruk te generen in het "afdruk" sheet. Nu is mijn probleem dat wanneer je aan het einde van de pagina komt omdat je meer dan 10 opties hebt en 10 invul vakken dat soms PSV,AJAX of FEY (namen in het bestand) van de tekst worden gescheiden door het einde van de pagina. Mijn vraag luidt: hoe kan ik zorgen dat ze bij elkaar blijven?
 

Bijlagen

Volgens mij doe die autosize knop niets of ik snap de code niet. Even het idee van Cobbe uitgewerkt dmv een textbox. Maar ook deze wordt op 2 pagina's geprint.

Code:
Sub VenA()
With Sheets("Gegevens")
    c00 = .[c5] & Chr(10) & vbTab & .[d5] & Chr(10) & .[c6] & Chr(10) & vbTab & .[d6] & Chr(10) & .[c7] & Chr(10) & vbTab & .[d7]
End With
With Sheets("Afdruk")
    .TextBoxes("Tekstvak 1").Text = c00
    .PrintPreview
End With
End Sub
 

Bijlagen

Bedankt, maar dat is toch niet echt wat ik zoek.
De autosize knop werkt trouwens pas als je in sheet "gegevens" in cel B5 B6 of B7 een getal neerzet en daarna op autosize drukt.
 
Hieronder wat code (2 subs) die je eerst maar eens in een kopie van je werkblad moet proberen.

Code:
Option Explicit

Sub ResetPageBreaks()
    
    Dim ws As Worksheet
    Dim HPBrk As HPageBreak
    
    'Workaround for a known bug (PageBreaks.Items missing)
    RepairHPBreaks
    
    Set ws = ActiveSheet
    
    If ws.HPageBreaks.Count = 0 Then Exit Sub
    
    For Each HPBrk In ws.HPageBreaks
        Select Case HPBrk.Location.Row
        Case 78 To 79
                HPBrk.Delete
                ws.Range("A77").PageBreak = xlPageBreakManual
        End Select
    Next HPBrk
    
End Sub

Sub RepairHPBreaks()
    
    Dim LastRow As Long, LastColumn As Long, x As String
    Dim currcell As Range
    
    Set currcell = ActiveCell
    
    LastRow = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    LastColumn = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
    Cells(LastRow, LastColumn).Select
    x = ActiveSheet.HPageBreaks(1).Location.Address
    currcell.Select
    
End Sub
 
Bedankt voor je reactie!

Heb ze allebei even uitgeprobeerd maar geen van de 2 leek te werken.
De eerste geeft een foutmelding bij HPBrk.Delete en bij de 2e veranderd er niks aan het document. Ik snap ook niet veel van je code overigens..
 
Maak in ieder geval een bestand waarmee je een vervolg pagina krijgt en wat er bij elkaar moet blijven.
 
Test het zo eens.
Code:
Sub hsv()
Dim Hpbreak As HPageBreak
 With Sheets("afdruk")
  For Each Hpbreak In .HPageBreaks
   If IsNumeric(Cells(Hpbreak.Location.Row - 1, 2)) Then
      lr = Hpbreak.Location.Row
        .Rows(lr).PageBreak = xlNone
        .Rows(lr).Offset(-2).PageBreak = -4135
    End If
  Next
 End With
End Sub
 
Laatst bewerkt:
Bedankt voor je reactie!

Heb ze allebei even uitgeprobeerd maar geen van de 2 leek te werken.
De eerste geeft een foutmelding bij HPBrk.Delete en bij de 2e veranderd er niks aan het document. Ik snap ook niet veel van je code overigens..
Even een dagje weggeweest...

De bedoeling was om alleen ResetPageBreaks uit te voeren terwijl je het betreffende werkblad actief hebt. De andere sub wordt vanuit deze sub aangeroepen.
HPageBreaks zijn horizontale pagina-einden (je hebt ook verticale pagina-einden).
De code kijkt of er pagina-einde staat vóór regel 78 of 79; zo ja dan wordt deze verwijderd, tenzij er een UFM langskomt (Unidentified Foutmelding :d) en wordt een pagina-einde voor regel 77 ingevoerd.

De verstorende factor RepairHPBreaks is nodig omdat soms de HPageBreaks.Items "zoek" zijn en met deze code komen ze weer tevoorschijn.
Gebaseerd op de informatie van Microsoft.
 
Marcel,

Zoals je je code uitlegt is wel precies wat ik wil, kijken of er een pagina einde is zo ja, pagina einde voor regel 77 invoeren. Maar ik heb van alles geprobeerd maar krijg m niet werkende. Zou je hem misschien in het voorbeeld wat ik hier eerder heb geplaatst kunnen zetten?
 
Hierbij de code verwerkt in het voorbeeld (module 2) en enigszins aangepast.
Er staat nu tekst op regel 79 voorafgegaan door een pagina-einde. Als je de macro uitvoert, dan wordt het pagina-einde verplaatst naar regel 77.
Code:
Option Explicit

Sub ResetPageBreaks()
    
    Dim ws As Worksheet
    Dim HPBrk As HPageBreak
    
    'Workaround for a known bug (PageBreaks.Items missing)
    RepairHPBreaks
    
    Set ws = ActiveSheet
    
    If ws.HPageBreaks.Count = 0 Then Exit Sub
    Application.ScreenUpdating = False
    For Each HPBrk In ws.HPageBreaks
        Select Case HPBrk.Location.Row
        Case 78 To 79
                If HPBrk.Type = xlPageBreakManual Then HPBrk.Delete
                ws.Range("A77").PageBreak = xlPageBreakManual
        End Select
    Next HPBrk
    Application.ScreenUpdating = True
    
End Sub

Sub RepairHPBreaks()
    
    Dim LastRow As Long, LastColumn As Long, x As String
    Dim currcell As Range
    
    Application.ScreenUpdating = False
    Set currcell = ActiveCell
    
    LastRow = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    LastColumn = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
    Cells(LastRow, LastColumn).Select
    On Error Resume Next
    x = ActiveSheet.HPageBreaks(1).Location.Address
    On Error GoTo 0
    currcell.Select
    Application.ScreenUpdating = True
    
End Sub
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan