2016-03-22 6 views
1

Der folgende Code funktioniert ohne Änderungen verfolgen an. Welche Änderungen müssten vorgenommen werden, damit "Änderungen verfolgen" bei einem Makro-Lauf ausgelöst werden und das Skript nicht endlos mit dem ersten Ergebnis weiterläuft?Makro zum Hinzufügen führender Nullen mit Tracking auf - Microsoft VBA

Sub ConvertDateFormat() 
With ActiveDocument.Range 
With .Find 
    .ClearFormatting 
    .Replacement.ClearFormatting 
    .Text = "([0-9]{1,2})[/]([0-9]{1,2})[/]([0-9]{4})" 
    .Format = True 
    .Wrap = wdFindStop 
    .Forward = True 
    .MatchWildcards = True 
    .Execute 
    End With 
    Do While .Find.Found 

If IsDate(.Text) Then 
    .Text = Format(.Text, "dd/mm/yyyy") 
End If 
.Collapse wdCollapseEnd 
.Find.Execute 
Loop 
End With 
End Sub 

Above Lösung ist aus: Working with Microsoft Word VBA - macro to add leading zeroes to date

+0

Sie müssen detaillierte Informationen darüber angeben, auf was dieses Makro ausgeführt werden soll, welche Ergebnisse es Ihnen aktuell liefert und was das gewünschte Ergebnis sein soll. Und was meinst du genau mit "Trackwechsel zum Auslösen bei Makrolauf"? –

Antwort

0

Sie benötigen Details in ordentlich zu schaffen. Wenn ich es richtig verstanden Ihre Frage bilden,

„Skript nicht halten endlos auf das erste Ergebnis Looping“,

Ich denke, während Änderungen verfolgen an sind, Worte zu finden und ersetzen ersetzt gesamte Datum, also wenn man bei .find .execute kollabiert, gibt es wieder das neue ersetzte Datum, so dass es endlos schleift. Sie müssen ein weiteres .find.execute hinzufügen, um das neue eingefügte Datum zu überspringen. Ich denke, das wird das Problem lösen.

Sub TestTrackOn() 
With ActiveDocument.Range 
With .Find 
    .ClearFormatting 
    .Replacement.ClearFormatting 
    .Text = "([0-9]{1,2})[/]([0-9]{1,2})[/]([0-9]{4})" 
    .Format = True 
    .Wrap = wdFindStop 
    .Forward = True 
    .MatchWildcards = True 
    .Execute 
    End With 
    Do While .Find.Found 
If IsDate(.Text) Then 
    .Text = Format(.Text, "dd/mm/yyyy") 
End If 
.Collapse wdCollapseEnd 
.Find.Execute 
.Find.Execute 
Loop 
End With 
End Sub 
+0

Ja, es funktioniert jetzt perfekt. Danke Rahul. –