Word VBA:如果前面的字符是数字,请替换行尾的空格



我在这里发现了类似的问题,但我不知道如何让它满足我的需要。

我需要替换行尾的空格(" "(,如果它前面有一个数字("[0-9]"(。替换文本将为不间断空格 ("^s"(。因此,例如,在我的整个文档中,我可能会以这种格式写日期"24 九月 2019"、电话号码、短语(如"8 天内"(等。我需要确保该行不会在数字和以下单词之间断开,因此将空格替换为不间断的空格。

我的代码在不同的 PC 上,所以我不容易包含它,到目前为止我所做的只是复制上面链接的代码,但它不起作用,因为我不确定我需要修改哪些部分。因此,请参阅上面的链接了解我到目前为止所拥有的内容,或者当然欢迎任何可能更有效的新代码。

提前谢谢你:)

这应该可以解决您的问题:

Sub testNBS()
Dim myRange As Range
Set myRange = ActiveDocument.Range(ActiveDocument.Range.Start, ActiveDocument.Range.Start)
myRange.Select
Selection.Expand wdLine
While Selection.End < ActiveDocument.Range.End
If Right(Selection.Text, 1) = " " And IsNumeric(Left(Selection.Words.Last, 1)) = True Then
Selection.Characters.Last = Chr(160)
End If
Selection.MoveDown wdLine, 1
Selection.Expand wdLine
Wend
End Sub

我将Left更改为Right,添加了对数字字符串的检查,并添加了不间断空格 (NBS( 来代替行中的最后一个字符,这应该是一个空格。我添加了And子句只是为了仔细检查/验证。

最新更新