Есть ли лучший код VBA, который удаляет все пустые строки (не пробелы) в текстовом поле? - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть пользовательская форма с текстовым полем и командная кнопка в Excel. Когда в текстовом поле есть текст, и я нажимаю командную кнопку, он удаляет пустые строки, но не все из них. Там хранится несколько пустых строк. Как я могу настроить код ниже, чтобы он удалил все пустые строки? (не пробелы)

Private Sub CommandButton1_Click()
    Dim A$, I&
    A = TextBox1
    Do
        I = Len(A)
        A = Replace(A, vbCrLf & vbCrLf, vbCrLf)
    Loop While Len(A) <> I
    TextBox1 = A
End Sub

1 Ответ

1 голос
/ 02 ноября 2019

Мне кажется, ваш код работает нормально. Единственная проблема, которую я вижу, это когда у вас есть разрыв строки, который не vbCrLf (например, просто vbCr или просто vbLf).

В любом случае,вместо того, чтобы иметь цикл, который работает и продолжает заменять разрывы строк, вы можете использовать для этого регулярные выражения.

Попробуйте что-то вроде:

Private Sub CommandButton1_Click()
    Dim regEx As New RegExp
    regEx.Global = True
    regEx.Pattern = "[\r\n]{2,}"
    TextBox1.Text = regEx.Replace(TextBox1.Text, vbNewLine)
End Sub

Примечание:

Вам нужно будет добавить ссылку Microsoft VBScript Regular Expressions x.x. Кроме того, вы можете использовать позднюю привязку:

Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...