![]() |
|
![]() |
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
![]() Code:
Sub Macro7() ' ' GBM2 Macro ' Dim i As Long, StrTxt As String ' Setting the variable With ActiveDocument.Tables(1) ' Active Documents in the table For i = .Rows.Count To 2 Step -1 ' Counts the rows by 1 down If .Rows(i - 1).Cells.Count > 1 Then ' Rows will count by one cell If InStr(.Cell(i, 2).Range.Text, "Ensure S") = 1 Then ' if the second column starts with "Ensure S" you know what I mean the first part of the procedure in the step then StrTxt = Split(.Cell(i, 2).Range.Text, " ")(1) ' Until the End or until the space is found after "Ensure S" .Rows.Add BeforeRow:=.Rows(i) ' Add an extra row for the Grey Bar With .Rows(i) .Cells.Merge 'Merge those Cells! .Shading.BackgroundPatternColor = -603930625 'Grey those cells! .Range.Style = wdStyleNormal 'wdStyleNormal is the normal font template, for me which is Times new roman 12 for others it could be arial or calabri based on the template .Range.ParagraphFormat.KeepWithNext = wdToggle 'Keep with next .Range.Text = "Step " & StrTxt 'add "Step" Text infront of the step number .Range.Rows.Height = 18 'Height is configurable .Range.Bold = wdToggle 'Bold the Grey Bar text .Range.Font.Size = 10 'Now shrink the text End With End If Else i = i - 1 ' Makes the program not crash <- Suprisingly the hardest part lol End If Next End With ' End Sub Cross Posted at: http://www.mrexcel.com/forum/excel-q...ml#post4337459 http://www.excelforum.com/excel-prog...first-one.html |
#2
|
||||
|
||||
![]()
Obviously, you'd need to loop through the tables. For example
Code:
Dim Tbl As Table For Each Tbl In ActiveDocument.Tables With Tbl 'Process the table here End With Next
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
![]()
How would I do that?
Do I just copy and paste my code inside your With statement? I have tried multiple times. Im pretty novice at this and still learning I wish there was a select all Tables haha |
#4
|
||||
|
||||
![]()
You put everything that your code has between 'With ActiveDocument.Tables(1)' and your final 'End With' where the code I posted has:
'Process the table here PS: Please post Word topics in the appropriate Word forum. Thread moved.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
![]()
Ahh Im having an error, here.
Run-Time error '5991' Cannot access individual row in this collection because the table has vertically merged cells Any way to skip these table Or start at row 3 on each table? |
#6
|
||||
|
||||
![]()
You can test the table .Uniform property before processing and either skip the table or process it in a different way if it's false. For example:
Code:
Dim Tbl As Table For Each Tbl In ActiveDocument.Tables With Tbl If .Uniform = True Then 'Process Uniform table here Else 'Process non-Uniform table here (or skip it by leaving out the 'Else' statement) End If End With Next
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#7
|
|||
|
|||
![]() Code:
Dim i As Long, StrTxt As String Dim Tbl As Table For Each Tbl In ActiveDocument.Tables With Tbl If .Uniform = True Then 'Process Uniform table here With Tbl 'Start ' Active Documents in the table For i = .Rows.Count To 2 Step -1 ' Counts the rows by 1 down If .Rows(i - 1).Cells.Count > 1 Then ' Rows will count by one cell If InStr(.Cell(i, 2).Range.Text, "Ensure S") = 1 Then ' if the second column starts with "Ensure S" you know what I mean the first part of the procedure in the step then StrTxt = Split(.Cell(i, 2).Range.Text, " ")(1) ' Until the End or until the space is found after "Ensure S" .Rows.Add BeforeRow:=.Rows(i) ' Add an extra row for the Grey Bar With .Rows(i) .Cells.Merge 'Merge those Cells! .Shading.BackgroundPatternColor = -603930625 'Grey those cells! .Range.Style = wdStyleNormal 'wdStyleNormal is the normal font template, for me which is Times new roman 12 for others it could be arial or calabri based on the template .Range.ParagraphFormat.KeepWithNext = wdToggle 'Keep with next .Range.Text = "Step " & StrTxt 'add "Step" Text infront of the step number .Range.Rows.Height = 18 'Height is configurable .Range.Bold = wdToggle 'Bold the Grey Bar text .Range.Font.Size = 10 'Now shrink the text End With End If Else i = i - 1 ' Makes the program not crash <- Suprisingly the hardest part lol End If Next End If End With Next End Sub Am I doing it right? Logically it all makes sense right? |
#8
|
||||
|
||||
![]()
Do your existing tables have merged cells? If so, the .Uniform test will cause them to be skipped. That's exactly what one would expect from what I said in my previous reply:
Quote:
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#9
|
|||
|
|||
![]()
Yes I do.
But should that matter? I use Code:
With ActiveDocument.Tables(1) as long as there is a "Ensure S" in the second column Thanks! |
#10
|
||||
|
||||
![]()
It matters because your code will then skip over tables with merged cells - that's the whole point of implementing the test that way, as per your request in post #5.
Try: Code:
Sub Demo() Application.ScreenUpdating = False Dim i As Long, StrTxt As String, Tbl As Table For Each Tbl In ActiveDocument.Tables With Tbl For i = .Range.Cells(.Range.Cells.Count).RowIndex To 2 Step -1 ' Counts the rows by 1 down On Error Resume Next If .Rows(i - 1).Cells.Count > 1 Then ' Rows will count by one cell If InStr(.Cell(i, 2).Range.Text, "Ensure S") = 1 Then ' if the second column starts with "Ensure S" you know what I mean the first part of the procedure in the step then StrTxt = Split(.Cell(i, 2).Range.Text, " ")(1) ' Until the End or until the space is found after "Ensure S" .Rows.Add BeforeRow:=.Rows(i) ' Add an extra row for the Grey Bar With .Rows(i) .Cells.Merge 'Merge those Cells! .Shading.BackgroundPatternColor = -603930625 'Grey those cells! .Range.Style = wdStyleNormal 'wdStyleNormal is the normal font template, for me which is Times new roman 12 for others it could be arial or calabri based on the template .Range.ParagraphFormat.KeepWithNext = wdToggle 'Keep with next .Range.Text = "Step " & StrTxt 'add "Step" Text infront of the step number .Range.Rows.Height = 18 'Height is configurable .Range.Bold = wdToggle 'Bold the Grey Bar text .Range.Font.Size = 10 'Now shrink the text End With End If Else i = i - 1 ' Makes the program not crash <- Suprisingly the hardest part lol End If Next End With Next Application.ScreenUpdating = True End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#11
|
|||
|
|||
![]()
bingo!
thanks Macropod |
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
ksigcajun | Word VBA | 24 | 02-16-2023 03:09 PM |
![]() |
VBLearner | Word VBA | 1 | 03-09-2014 08:42 PM |
VBA sort table code | mikec | Excel Programming | 8 | 10-01-2013 04:37 PM |
![]() |
donbexcel | Word VBA | 1 | 11-02-2011 05:25 AM |
how can I add a peace of code to MS document | amlife | Word VBA | 0 | 03-03-2010 03:35 PM |