Слово VBA: заменить пробел в конце строки, если предыдущий символ является цифрой - PullRequest
0 голосов
/ 07 января 2020

Я нашел эту похожую проблему здесь , но я не знаю, как заставить это работать для того, что мне нужно.

Мне нужно заменить пробел (" " ) в конце строки, если ей предшествует ди git ("[0-9]"). Текст замены будет неразрывным пробелом ("^s"). Так, например, во всем моем документе у меня могут быть даты, написанные в этом формате «24 сентября 2019 года», номера телефонов, фразы типа «через 8 дней» и т. Д. c. Мне нужно убедиться, что строка между ди git и следующим словом не разрывается, следовательно, заменив пробел неразрывным пробелом.

Мой код находится на другом P C, поэтому мне нелегко включить его, и все, что я сделал до сих пор, - скопируйте ссылку, приведенную выше, но она не работает, потому что я не уверен, какие части мне нужно изменить. Поэтому, пожалуйста, просмотрите приведенную выше ссылку, чтобы узнать, что я получил до сих пор, или, конечно, приветствуется любой новый код, который может быть более эффективным.

Заранее спасибо:)

1 Ответ

0 голосов
/ 07 января 2020

Это должно решить вашу проблему:

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, добавил проверку для строки цифр c и добавил в дополнение неразрывный пробел (NBS) вместо последнего символа в строке, который должен быть пробелом. Я добавил предложение And только для того, чтобы перепроверить / подтвердить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...