#1
|
|||
|
|||
Select Lists or List.ListParagraphs of bulleted text
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 |