M
Michael Koerner
I have a macro (code below) thanks to the knowledgeble people in this NG, which goes through a table, and whenever the alpha character changes in column one it inserts a new row, merges the cells and inserts the new character centered in the new cell. The macro works great except for one problem. When the first character changes from upper case to lower case I get a new row. examples
Curwin
"new row -D-"
Deiter
"new row -d-"
deJong
"new row -D-"
Del-pivo
Below is the code which I am now using and any help is greatly appreciated, TIA
Sub InsertFramedHeadRow
' insert a framed header row into the table
'
Dim i As Long, j As Long
Dim Init As String
Dim newrow As Row
Dim initrng As Range, arange As Range
Dim dtable As Table
Set dtable = Selection.Tables(1)
j = dtable.Rows.Count
Init = dtable.Cell(j, 1).Range.Characters(1)
For i = j To 1 Step -1
Set initrng = dtable.Cell(i, 1).Range
If initrng.Characters(1) <> Init Then
Set newrow = dtable.Rows.Add(BeforeRow:=dtable.Rows(i + 1))
dtable.Split newrow
Set arange = newrow.Range
arange.Start = arange.Start - 1
arange.Collapse wdCollapseStart
arange.Paragraphs(1).Range.Font.Hidden = True
With newrow
.Cells.Merge
.Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Range.Text = "- " & Init & " -"
.Range.Font.Bold = True
.Range.Shading _
.BackgroundPatternColor = wdColorGray10
.Height = InchesToPoints(0.24)
.Borders.Enable = wdLineStyleSingle
.Borders.OutsideLineWidth = wdLineWidth100pt
End With
Init = initrng.Characters(1)
End If
Next i
Set newrow = dtable.Rows.Add(BeforeRow:=dtable.Rows(i + 1))
With newrow
.Cells.Merge
.Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Range.Text = Init
.Range.Font.Bold = True
.Range.Shading.BackgroundPatternColor = wdColorGray10
End With
End Sub
Curwin
"new row -D-"
Deiter
"new row -d-"
deJong
"new row -D-"
Del-pivo
Below is the code which I am now using and any help is greatly appreciated, TIA
Sub InsertFramedHeadRow
' insert a framed header row into the table
'
Dim i As Long, j As Long
Dim Init As String
Dim newrow As Row
Dim initrng As Range, arange As Range
Dim dtable As Table
Set dtable = Selection.Tables(1)
j = dtable.Rows.Count
Init = dtable.Cell(j, 1).Range.Characters(1)
For i = j To 1 Step -1
Set initrng = dtable.Cell(i, 1).Range
If initrng.Characters(1) <> Init Then
Set newrow = dtable.Rows.Add(BeforeRow:=dtable.Rows(i + 1))
dtable.Split newrow
Set arange = newrow.Range
arange.Start = arange.Start - 1
arange.Collapse wdCollapseStart
arange.Paragraphs(1).Range.Font.Hidden = True
With newrow
.Cells.Merge
.Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Range.Text = "- " & Init & " -"
.Range.Font.Bold = True
.Range.Shading _
.BackgroundPatternColor = wdColorGray10
.Height = InchesToPoints(0.24)
.Borders.Enable = wdLineStyleSingle
.Borders.OutsideLineWidth = wdLineWidth100pt
End With
Init = initrng.Characters(1)
End If
Next i
Set newrow = dtable.Rows.Add(BeforeRow:=dtable.Rows(i + 1))
With newrow
.Cells.Merge
.Cells(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Range.Text = Init
.Range.Font.Bold = True
.Range.Shading.BackgroundPatternColor = wdColorGray10
End With
End Sub