2015-06-07 87 views
-1

改變第一字符我有下面的代碼段(未礦)增加了一個標籤,在MS Word的每個腳註(2013)。Word宏:在腳註

的代碼工作正常,但它的工作更好,如果沒有,每次添加一個標籤,但它只會替換第一個字符(不管它是 - 製表符,空格)用標籤。

如果宏運行兩次,我沒有兩個標籤,這樣,等

Sub TabFootnotes() 
    For s = 1 To ActiveDocument.Footnotes.Count 
     ActiveDocument.Footnotes(s).Range.Select 
     With Selection 
      .Collapse Direction:=wdCollapseStart 
      .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend 
      .TypeText Text:=vbTab 
     End With 
    Next 
End Sub 
+0

該代碼的確如此:它用一個製表符替換第一個字符(將數字與文本分開的空格)。問題是,這個動作修改了腳註的'Range',所以它現在包括標籤(它使用的*不*包括空格)。所以當這段代碼再次運行時,會發生不同的事情,因爲現在'Range'是不同的。 – GSerg

+0

你說得對。只有執行一次代碼才能正常工作。這是代碼提出的另一個問題。 – menteith

+0

看看這個[鏈接](http://www.gmayor.com/installing_macro.htm)幫助 – 0m3r

回答

0

但是你這樣做,你將不得不拿出一個辦法來確定第一個字符是可替換與否。這是因爲當您更改空間別的東西,這個東西變成註腳的Range的一部分。因此,當宏再次運行時,您需要知道是否必須保留或替換第一個字符。

Dim f As Footnote 

For Each f In ActiveDocument.Footnotes 
    With f.Range.Characters(1) 
    If .Text = vbTab Or .Text = " " Then 'Use any other sensible detection logic here 
     .Text = vbTab 
    Else 
     .InsertBefore vbTab 
    End If 
    End With 
Next