![]() |
|
|
|
#1
|
|||
|
|||
|
Hello,
I struggle to select the numbered items of a custom list (1., 2., (a), etc.). The aim here is to select all numbers items and change font to Times New Roman. .dotm is attached to test I tried this but it fails Code:
Public Sub ChineseChar()
Dim oD As Object, i As Integer, lstp As List
Set oD = ActiveDocument
If (Selection.Type <> wdSelectionIP) Then
Selection.Font.Name = "Times New Roman"
MsgBox "Times New Roman has been applied to the selected text"
Else
oD.Select
Selection.WholeStory
Selection.Font.Name = "Times New Roman"
For Each lstp In oD.Lists
lstp.Range.Font.Name = "Times New Roman"
Next lstp
End If
Exit Sub
End Sub
|
|
#2
|
|||
|
|||
|
Found the solution, almost...
Code:
Sub SelectNumberingAndChangeFont()
Dim para As Paragraph
Dim list As list
Dim lvl As ListLevel
Dim lev As ListTemplate
For Each lev In ActiveDocument.ListTemplates
For Each lvl In lev.ListLevels
lvl.Font.Name = "Times New Roman"
Next lvl
Next lev
End Sub
Code:
Sub SelectNumberingAndChangeFont()
Dim para As Paragraph
Dim list As list
Dim lvl As ListLevel
Dim lev As ListTemplate
For Each lev In ActiveDocument.ListTemplates
For Each lvl In lev.ListLevels
If lvl.Index <> 3 Then
'If lvl.LevelNumber <> 3 Then
lvl.Font.Name = "Times New Roman"
End If
Next lvl
Next lev
End Sub
|
|
#3
|
|||
|
|||
|
So the solution here would be to:
a) To loop through each paragraph, verify it is a paragraph with levels (list), create an array of paragraph index when level is the third level Code:
For Each para In ActiveDocument.ListParagraphs
If para.Range.ListFormat.ListType <> wdListNoNumbering Then
Code:
For Each lev In ActiveDocument.ListTemplates
For Each lvl In lev.ListLevels
If lvl.Index (found in array) Then
The only way to know level of list is through ListFormat properties (.ListLevelNumber, .ListString and .ListValue) |
|
#4
|
|||
|
|||
|
I give up... I failed.
Attached is the macro with console log. I only want to change ActiveDocument.ListTemplates.ListLevels.Font.Name = "Times New Roman" at exception of third-level paragraph. Sounds I need an expert here, thanks |
|
#5
|
||||
|
||||
|
Perhaps this is what you wanted
Code:
Sub ChangeListFonts()
Dim aLT As ListTemplate, aLL As ListLevel
For Each aLT In ActiveDocument.ListTemplates
For Each aLL In aLT.ListLevels
If aLL.Index <> 3 Then
aLL.Font.Name = "Times New Roman"
End If
Next aLL
Next aLT
End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
|
#6
|
|||
|
|||
|
Hi Guessed, I posted a similar code above, it doesn't as Index doesn't return the level but just the index.
I found the solution to detect third-level using ListTemplates.ListLevels. I use TextPosition. Since the list styles are well defined, the TextPosition is fixed and well known. Code:
Sub SelectNumberingAndChangeFont()
Dim para As Paragraph
Dim list As list
Dim lvl As ListLevel
Dim lev As ListTemplate
Dim i As Integer
Dim ib As Integer
i = 0
ib = 0
For Each lev In ActiveDocument.ListTemplates
For Each lvl In lev.ListLevels
Debug.Print "TXT POS - " & lvl.TextPosition
If lvl.TextPosition <> 147.4 Then
lvl.Font.Name = "Times New Roman"
' Change numbering of list to Times New Roman at the exception of third-level numbering
End If
Next lvl
Next lev
End Sub
|
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
autoformat bulleted lists
|
tlstaylorgirl | Word | 1 | 09-17-2015 12:12 PM |
| Bulleted Lists in Notebook Layout | beatles1291 | Word | 0 | 01-25-2012 08:52 PM |
| Adjust list indents for all bulleted text (of different bullets) | ghumdinger | Word | 13 | 09-21-2011 12:59 AM |
| Bulleted and Numbered Lists | peret944 | Word | 0 | 03-25-2011 01:08 PM |
Bulleted Lists - Changing Font
|
mhartman09 | Word | 2 | 12-10-2010 12:18 PM |