Ga naar inhoud

Splitsen samengevoegde cellen voorkomen bij nieuwe pagina


Danielle_01

Aanbevolen berichten

Hallo allemaal,

 

Ik ben al een tijdje aan het stoeien, maar kom er echt niet uit. Ik heb een tabel en kan er niet omheen dat er samengevoegde cellen in voorkomen. Echter, zoals verwacht, geven deze samengevoegde cellen veel problemen. Een van de problemen is de plaatsing van de pagina eindes. De invoer zal telkens verschillend zijn, dus het is niet mogelijk om handmatig de pagina eindes in te stellen. Echter wil ik voorkomen dat mijn samengevoegde cellen gesplitst worden, want de tekst wordt daardoor verdeeld over twee verschillende pagina's (zie bijlage).

 

Ik zou dit probleem graag willen oplossen door bijvoorbeeld het gebruik van een macro. Op internet heb ik hier al veel over opgezocht, maar omdat ik hier geen ervaring mee heb kom ik er maar niet uit... Ik heb nu deze programmering, maar krijg telkens een foutmelding:

 

Sub MergedWithNext() 'FTable As Table)
 
Dim Tester As String
Dim FTable As Table
Dim i As Integer
Dim imax As Integer
Dim RowStart As Integer
Dim RowEnd As Integer
Dim CNMerged As Integer
Dim CNNotMerged As Integer
Dim CNMax As Integer
 
CNMerged = 2 'A column that is vertically merged that you don't want to split pages
CNNotMerged = 1 'A column that has no vertical mergers
 
Set FTable = Selection.Tables(1)
 
With FTable
imax = .Rows.Count
CNMax = .Columns.Count
 
'Start with no rows kept with next
ActiveDocument.Range(Start:=.Cell(1, 1).Range.Start, _
    End:=.Cell(imax, CNMax).Range.End).ParagraphFormat.KeepWithNext = False
 
On Error Resume Next
For i = 2 To imax 'Assume table has header
 
    Tester = .Cell(i, CNMerged).Range.Text
    If Err.Number = 0 Then 'The first row in the merged cell will exist, others will not
 
        'If you are back in this If statement, then you have left the previous block of rows
        'even if that was a block of one. The next If statement checks to see if the previous
        'row block had more than one row. If so it applies the "KeepWithNext" property
 
        If (RowEnd = (i - 1)) Then
 
            '.Cell(RowStart, 1).Range.ParagraphFormat.KeepWithNext = True
            ActiveDocument.Range(Start:=.Cell(RowStart, CNNotMerged).Range.Start, _
                End:=.Cell(RowEnd - 1, CNNotMerged).Range.End).ParagraphFormat.KeepWithNext = True
 
                'Use RowEnd - 1 because you don't care if the whole merged block stays with the next
                'row that is not part of the merger block
 
        End If
 
        RowStart = i 'Beginning of a possible merger block
        RowEnd = 0 'Reset to 0, not really needed, used for clarity
 
    Else
 
        RowEnd = i 'This variable will be used to determine the last merged row
        Err.Clear
 
    End If
 
Next i
On Error GoTo 0
End With
End Sub
 
Zou iemand mij op weg willen/kunnen helpen? Wat gaat er fout in de programmering, of is er een totaal andere oplossing? Ik hoor het graag.
 
Bij voorbaat dank!

 

 

post-34785-0-30515900-1450095630_thumb.j

Link naar reactie
Delen op andere sites

Je kunt niet zomaar een code (hier vandaan gehaald zie ik: klik) op elk willekeurig blad van een Excelbestand toepassen. Veel hangt af van hoe jouw blad er uitziet. Als steeds na een bepaalde rij naar een volgend blad wordt overgeschakeld, moet je bepalen hoeveel rijen daarvoor naar de volgende pagina moeten worden doorgeschoven en dat hangt weer af van hoeveel rijen met gegevens bij elkaar moeten worden gehouden en hoe die rijen (al dan niet samengevoegd er uitzien). Zonder inzage in het bestand is daar weinig van te zeggen. En mét inzage moet ook nog bekend zijn wat de algemene indeling van je blad(eren) is, want bij de bepaling van wanneer de gegevens te splitsen, moet je je ergens op kunnen baseren.

Link naar reactie
Delen op andere sites

  • 3 weken later...

Aangezien er geen reactie meer komt op dit topic, besluit ik dat het probleem opgelost is en wordt het topic afgesloten ... mocht je het topic willen heropenen, stuur dan eventjes een privébericht naar mij of naar één van de andere teamleden.
 

Link naar reactie
Delen op andere sites

Gast
Dit topic is nu gesloten voor nieuwe reacties.
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.