【发布时间】:2022-12-21 14:55:24
【问题描述】:
我有一个宏来确保大数字在正确的位置有逗号。
我插入逗号的例程有效,但还包括日期、街道编号等(例如,15 January 2,022 和 1,234 Smith Street)。
我正在尝试更正街道地址,但我的循环有问题。它只是查找/修复其中带有逗号的街道号码的第一个实例。
请注意,代码 sn-p 包含我在故障排除期间尝试过的几个注释命令。
'remove commas from street addresses
Set oRange = ActiveDocument.Range
With oRange.Find
'Set the search conditions
.ClearFormatting
.Text = "(<[0-9]{1,2})(,)([0-9]{3})"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchWildcards = True
.Execute
'If .Found Then
Do While .Found
oRange.Select 'for debugging purposes
If (InStr(1, "NorthEastWestSouth", Trim(oRange.Words(3).Next(wdWord, 1)), 0) <> 0 And Len(Trim(oRange.Words(3).Next(wdWord, 1))) > 1) Or _
(InStr(1, "StreetAvenueRoadRdBoulevardBlvdPikeCircleHighwayHwyCourtCtLaneWayParkwayAlleyBypassEsplanadeFreewayJunctionRouteRteTraceTrailTurnpikeVille", _
Trim(oRange.Words(3).Next(wdWord, 2)), 0) <> 0 And Len(Trim(oRange.Words(3).Next(wdWord, 2))) > 1) Or _
(InStr(1, "StreetAvenueRoadRdBoulevardBlvdPikeCircleHighwayHwyCourtCtLaneWayParkwayAlleyBypassEsplanadeFreewayJunctionRouteRteTraceTrailTurnpikeVille", _
Trim(oRange.Words(3).Next(wdWord, 3)), 0) <> 0 And Len(Trim(oRange.Words(3).Next(wdWord, 3))) > 1) Or _
InStr(1, "N.E.W.S.", Trim(oRange.Words(3).Next(wdWord, 1) & Trim(oRange.Words(3).Next(wdWord, 2))), 0) <> 0 Then
.Replacement.Text = "\1\3"
.Execute Replace:=wdReplaceAll
'oRange.Text = VBA.Replace(oRange.Text, ",", "")
End If
'.Execute
'End If
Loop 'continue finding
End With
【问题讨论】:
标签: vba ms-word find-replace