Hej, jag vet att detta är ett excel forum, men kanske jag kan få hjälp ändå.. Är det något sånt här du menar? Hej, tack för ditt inlägg.range problem i word
Problemet är när jag försöker formattera kolumn för kolumn i en tabell i Word i ett vba makro. Jag använder mig av range objektet, med start på andra raden i tablellen och slut på sista raden i tabellen, för varje kolumn.
Om t ex xBold innehåller 1;1;0, så skall kolumerna 1 & 2 bli feta, medans sista kolumnen (3) bli icke-fet.
Om tex xFont är Arial;Arial;Helvetiva så skall 1 & 2 bli arial och tredje helvetica . Etc.
resultatet blir dock att det blir en enda röra. Gör jag en curRange.select så selecteras kolumnen korrekt. Således borde man kunna göra formatteringsoperationer på selection objektet, men jag vill helst ej använda detta eftersom det är tungrott. Men det borde ju fungera på range objektet också, vilket det alltså ej gör. Varför..?
'allt detta görs i en loop där colIndex räknas upp
curRange.SetRange Start:=curTable.cell(2, colIndex).Range.Start, _
End:=curTable.cell(curTable.Rows.Count, colIndex).Range.End
With curRange.font
.name = Xfont.GetCol(colIndex - 1, ";")
.bold = Xbold.GetCol(colIndex - 1, ";")
.italic = Xitalic.GetCol(colIndex - 1, ";")
.size = Xsize.GetCol(colIndex - 1, ";")
End WithSv: range problem i word
<code>
Public Sub Test(ByVal Range As Range, ByVal xBold, ByVal xFont)
Dim Table As Word.Table
Dim Column As Word.Column
Dim Bold() As String
Dim Font() As String
Bold = Split(xBold, ";")
Font = Split(xFont, ";")
For Each Table In Range.Tables
For Each Column In Table.Columns
Column.Select
With Selection.Font
.Name = Font(Column.Index - 1)
.Bold = (Bold(Column.Index - 1) = "1")
End With
Next
Next
End Sub
</code>Sv: range problem i word
Nej, det hjälper knappast mig pga att jag inte vill använda selection objektet, och ännu mindre vill selektera min selection eller range. Mina tabeller är för stora (flera hundra sidor) och arr jobba med selection objektet tar tid.
Hade jag velat det hade jag i min kod kunnat skriva:
curRange.select
Selection.font.bold = xbold.getcol(colIndex, ";")
...etc
Jag vill operera direkt på range objektet, som är definierat att vara kolumn 1, 2, 3, n..... med start på rad 2 och slut på sista raden i tabellen.
Jag vill skriva:
currange.font.bold= 1 (eller 0), inte selection.font.bold=1 (eller 0)
Detta därför att man inte behöver markera ett range objekt. Markering tar tid i sig själv, och att markera direkt på selection objektet tar alltså ännu längre tid.
Ju mer jag sitter med det desto mer övertygat är jag att det är microsoft-fel. Garanterat! Det finns ingen logik i att inte min kod fungerar. Att söka på msdn.microsoft.com funkar ju givetvis inte, då sannolikheten i att hitta det man söker = 0. har faktiskt inte hittat en enda artiken som behandlar hur man definierar upp delar av word-tabeller i range objekt...
/Axel