如何从右到左移动减号?

问题描述 投票:0回答:1

我需要一个MSWord宏来转换以下值:

568.63- 682.3- 12.78-

-568.63 -682.3 -12.78

ms-word word-vba digits
1个回答
0
投票

你实际上并不需要一个宏。您只需要一个通配符查找/替换:

Find = (<[0-9.]@)(-)
Replace = \2\1

作为一个宏,这将成为:

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "(<[0-9.]@)(-)"
    .Replacement.Text = "\2\1"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
End With
Application.ScreenUpdating = True
End Sub

至于@Freeflow确定的80.9-100.1问题,我倾向于用普通连字符之外的东西替换这些连字符(例如,非破坏连字符)。在这种情况下,您可以使用如下宏编码:

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchWildcards = True
    .Text = "([0-9])-([0-9])"
    .Replacement.Text = "\1^~\2"
    .Execute Replace:=wdReplaceAll
    .Text = "(<[0-9.]@)(-)"
    .Replacement.Text = "\2\1"
    .Execute Replace:=wdReplaceAll
  End With
End With
Application.ScreenUpdating = True
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.