#1
|
|||
|
|||
Removing KeepWithNext Formatting from Nested Tables?
Hello,
I have a document that is one big table with three Columns that has various other Tables within the middle Column. I am trying to remove Keep with next from the row in the larger all encompassing table that is above the smaller table, so that the tables don't split across pages. I used a macro that I found on here for a similar endeavor, just not in a giant table. Code:
Public Sub KeepRowsTogether() 'Keeps Tables on one page Dim oTbl As Table, oCel As Cell 'Iterate through all tables in document For Each oTbl In ActiveDocument.Tables oTbl.Range.Paragraphs.KeepWithNext = True With oTbl 'If there are no merged vertical cells, turn off KeepWithNext on last row If .Uniform = True Then For Each oCel In .Rows.Last.Range.Cells oCel.Range.Paragraphs.Last.KeepWithNext = False Next oCel Else 'Find vertically merged cells and turn off KeepWithNext Set oCel = .Range.Cells(.Range.Cells.Count) Do While oCel.ColumnIndex > 1 oCel.Range.Paragraphs.Last.KeepWithNext = False Set oCel = oCel.Previous Loop oCel.Range.Paragraphs.Last.KeepWithNext = False End If End With Next oTbl End Sub Code:
'Loops through all tables in large Table For Each InnerTable In OutterTable.Tables InnerTable.PreferredWidthType = wdPreferredWidthPoints InnerTable.PreferredWidth = 400 Last edited by Jfedora; 06-06-2017 at 10:53 AM. |
#2
|
|||
|
|||
Ok, I'm trying a different method now. As opposed to iterating through the tables and trying to find the position in the larger table, I'm iterating through all the cells of the large table and checking if there is a table in it, then removing the formatting from the row above.
Code:
Set LargeTable = ActiveDocument.Tables(1) For Y = 0 to LargeTable.Rows.Count For X = 0 to LargeTable.Columns.Count If LargeTable.Cells(Y,X).Tables.Count = 0 Then Next X Else LargeTable.Row(Y-1).ParagraphFormat.KeepWithNext = False Next X Next Y Code:
If LargeTable.Cells(Y,X).Tables.Count = 0 Then |
#3
|
|||
|
|||
Right after posting I saw my mistake of using 'Cells' instead of 'Cell'. However now I get a 'Next without For' error on this:
Code:
For Y = 0 To LargeTable.Rows.Count For X = 0 To LargeTable.Columns.Count If LargeTable.Cell(Y, X).Tables.Count = 0 Then Next X Else LargeTable.Row(Y - 1).ParagraphFormat.KeepWithNext = False Next X End If Next Y Code:
If LargeTable.Cell(Y, X).Tables.Count = 0 Then Next X |
#4
|
|||
|
|||
I was able to get it to work with this. Unfortunately, My tables are still rolling over pages, but that's another problem.
Code:
For Y = 0 To LargeTable.Rows.Count X = 0 Do While X < LargeTable.Columns.Count If LargeTable.Cell(Y, X).Tables.Count = 1 Then X = X + 1 LargeTable.Rows(Y - 2).Select Selection.ParagraphFormat.KeepWithNext = False Exit Do End If X = X + 1 Loop Next Y |
Tags |
keep with next, table, vba |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Nested tables. Count rows | NevilleT | Word VBA | 9 | 05-10-2017 05:22 AM |
Remove Styles in Word 2016 without removing formatting | stm27 | Word | 5 | 11-16-2016 12:49 PM |
Would like help removing "tables" for boxes from document | Alex MacLean | Word | 3 | 02-22-2015 01:39 PM |
Formatting all tables | knightmetal | Word | 2 | 09-10-2012 10:53 PM |
Nested vlookup with varable tables! | Dave Jones | Excel | 0 | 08-30-2012 09:15 AM |