2013-03-08 71 views
2

我想擁有在Word中根據我選擇的文本自動填充其格式設置。即如果我將光標放在粗體和斜體上,我希望能夠找到與此格式匹配的所有文本,而不必實際執行格式中選擇這些格式的手動過程 - >字體窗口中的查找對話框。VBA Word:更新查找當前選擇的格式

使用Word的宏錄製功能有一定的幫助,我是來工作的解決方案:

Sub FindFormat() 
    Selection.Find.ClearFormatting 
    Selection.Find.Replacement.ClearFormatting 
    With Selection.Find.Font 
     .Size = Selection.Font.Size 
     .Bold = Selection.Font.Bold 
     .Italic = Selection.Font.Italic 
     .Underline = Selection.Font.Underline 
     .StrikeThrough = Selection.Font.StrikeThrough 
     .DoubleStrikeThrough = Selection.Font.DoubleStrikeThrough 
     .Hidden = Selection.Font.Hidden 
     .SmallCaps = Selection.Font.SmallCaps 
     .AllCaps = Selection.Font.AllCaps 
     .Color = Selection.Font.Color 
     .Superscript = Selection.Font.Superscript 
     .Subscript = Selection.Font.Subscript 
    End With 
End Sub 

我可以在技術上使用它,並完成。問題在於它並不那麼直觀,因爲很難看到它所應用的格式,因此Find字段的逗號分隔列表永遠不會結束,並且會使用省略號切斷窗口,導致無法讀取所有應用的格式:

Microsoft Word Find

因此,要切入正題,我怎麼有VBA僅更改格式選項比中性不同,切剩下的,即無下劃線,字體顏色:自動等。不應該改變查找格式(離開其支票牛在中性狀態)?

此外,我怎樣稱找到對話框來打開所有這些設置而沒有任何實際的查找執行(例如,我可以手動添加文本或根據需要更改任何格式)?

欣賞。

回答

1

對於您的問題的第一部分,我會使用如下所示的IF語句。

.Size = Selection.Font.Size 
If Selection.Font.Bold = True Then .Bold = Selection.Font.Bold 
If Selection.Font.Italic = True Then .Italic = Selection.Font.Italic 
If Selection.Font.Underline <> wdUnderlineNone Then .Underline = Selection.Font.Underline 
If Selection.Font.StrikeThrough = True Then .StrikeThrough = Selection.Font.StrikeThrough 
If Selection.Font.DoubleStrikeThrough = True Then .DoubleStrikeThrough = Selection.Font.DoubleStrikeThrough 
If Selection.Font.Hidden = True Then .Hidden = Selection.Font.Hidden 
If Selection.Font.SmallCaps = True Then .SmallCaps = Selection.Font.SmallCaps 
If Selection.Font.AllCaps = True Then .AllCaps = Selection.Font.AllCaps 
If Selection.Font.ColorIndex <> wdAuto Then .ColorIndex = Selection.Font.ColorIndex 
If Selection.Font.Superscript = True Then .Superscript = Selection.Font.Superscript 
If Selection.Font.Subscript = True Then .Subscript = Selection.Font.Subscript 

等等,你想跟蹤任何其他值。 (請注意,我使用ColorIndex而不是Color,我使用的是Word 2010,這對我來說屬於正確的屬性。)

我不確定第二部分如何操作。理論上你會設置wdEditFind對話框的Find參數,但實際上似乎只是將字符串作爲其值。

另一件事;如果你想循環使用可能性,使用Find可能是一條可行的路。但是,如果您嘗試獲取具有特定格式的所有文本的列表,則更簡單的方法是右鍵單擊所選文本,然後選擇「樣式」>「選擇所有帶相似格式的文本」。然後你可以複製並粘貼到另一個文件。可能會或可能不會與您的需求相關,但從某些情況來看,這是一個方便的技巧。