我想更改所有左缩进段落的字体颜色(在从其他程序导出为 rtf 的文档中)。段落对话框显示它们都缩进 7.94 厘米。
我已经通过使用样式窗格选择了一些缩进的文本来完成此操作,勾选显示段落格式选项,选择所有实例,但这不会选择具有相同缩进的不同格式的文本,并且根本不会被宏记录器记录。
我尝试了查找替换框,将目标段落的段落格式对话框中的左缩进粘贴到查找格式、段落框中(确实有记录,.LeftIndent = CentimetersToPoints(7.94)
但根本找不到段落)。
(这是记录下来的以及我尝试过的其他方法:)
Sub E___IndentedParasBlueFont_DRAFT_TOFIX()
'
'!!!! TO TRY FOR EACH PARA, IF INDENT=, PARA SELECT, SELECTION FONT BLUE
Selection.Find.ClearFormatting
Selection.Find.ParagraphFormat.LeftIndent = CentimetersToPoints(7.94) 'find left indented paras- DOESNT FIND
Selection.Find.Execute
With Selection.Find.ParagraphFormat
' .LeftIndent = 4500 'X ERROR COPIED FROM STYLE FIND MACRO RECORDED
.LeftIndent = CentimetersToPoints(7.94) 'find left indented paras- DOESNT FIND
' .SpaceBeforeAuto = False
' .SpaceAfterAuto = False
' .CharacterUnitLeftIndent = 0
End With
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Highlight = True 'ADD HIGHLIGHT
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.Find.Execute Replace:=wdReplaceAll
'
' a_ Macro
' select all indented paras-styles pane
'XXXX DIDNT RECORD SELECT STYLES
'
With Selection.ParagraphFormat
.LeftIndent = 4500 '7.94 cm - recorded
.RightIndent = 0
.SpaceBefore = 0
.SpaceBeforeAuto = False
.SpaceAfter = 200
.SpaceAfterAuto = False
.Alignment = wdAlignParagraphLeft
.FirstLineIndent = 0
End With
Application.Run MacroName:= _
"Normal.F_Formats.F___FontBlueUnhidden_noOverlay_SelectedCharacters_CtrlAlt_B"
' CommandBars("Navigation").Visible = False
' Application.Move Left:=-1638, Top:=-1638
End Sub
我尝试将录制的宏中的缩进更改为所选文本样式中显示的缩进,.LeftIndent = 4500
但返回了错误。
我已经在 Google 上搜索了所有我能想到的内容,但没有找到任何结果。哪个搜索词可以正确找到缩进 7.94 厘米的段落?或者,是否可以按照样式窗格中提供的方法编写宏,即“选择包含该缩进的未命名样式的所有实例”?
答案1
文本最初可能使用不同的单位缩进,例如英寸。即使精确转换,Word 也无法找到使用不同单位输入的缩进。请尝试将单位更改为英寸。
您不需要 VBA 来实现这一点。只需3.125"
在“查找段落”中输入 而不是3.94
。但是如果您更喜欢录制宏,只要 Word 中的单位设置为英寸,它就无法在对话框中输入英寸。您必须直接编辑 VBA。替换CentimetersToPoints(7.94)
为InchesToPoints(3.125)
。
如果不起作用,请尝试不同的单位。您可以在“选项”>“高级”>“显示”部分找到所有可用单位,然后从“以以下单位显示测量值”旁边的下拉菜单中进行选择:
答案2
前面的答案应该可行,但这可能更简单(经过编辑以更好地匹配问题):
假设所有段落都缩进 7.94 厘米或根本不缩进,您可以运行以下 VBA:
Sub myColorIndented()
Dim myParagraph As Word.Paragraph
For Each myParagraph In ActiveDocument.Paragraphs
If myParagraph.Format.LeftIndent > 0 Then
myParagraph.Range.Font.ColorIndex = wdRed
End If
Next
End Sub
这将使所有缩进段落的字体变成红色。