VBA: удалить пустую строку в строке - PullRequest
1 голос
/ 15 марта 2019

долгое время пользователь для Power BI, но первый постер - в данном случае для VBA!

Я не программист, я довольно новичок в VBA и буквально (смущающе) провел день, пытаясь найтиответь на это.Я хочу удалить пустые строки в строке следующим образом:

"Первый раздел

Второй раздел

Третий раздел"

Контекст таков, что ясоздание скользящего индекса, отображаемого на каждом слайде контента, так что при нажатии на слайды индекс выделяет раздел, в котором вы находитесь. Я не хочу отображать подразделы, поэтому я попытался заменить названия разделов, начинающиеся с "-", на "", но это означает, что у меня есть пустые строки.Поэтому теперь я хочу удалить пустые строки.

Я попытался использовать: - операторы IIF, но замена на "" не удаляет пустую строку - регулярные выражения, другая ссылка предложила, что будет работать следующий шаблон: @«^ \ s + $ [\ r \ n] *», но @ выдает ошибку, и она не работает ни в коем случае

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

Я пытался использовать что-то вроде следующего:

Dim RE As Object
Set RE = CreateObject("VBScript.RegExp")

With RE

.Multiline = True

.Global = True

resultString = .Replace(subjectString, "\s\n", string.empty)

MsgBox resultString

End With

Другое потенциальное решение, которое я нашел в stackoverflow, было

Dim xArr() as string
xArr = Split(TextBox1.Value, vbCrLf)
TextBox1.Value = ""

for i = 0 to Ubound(xArr)
    If Trim(xArr(i)) <> "" Then
        TextBox1.value = TextBox1.value & xArr(i) & vbCrLf
    End If
Next

Но я не могу заставить это работать.

Любая помощь будет принята с благодарностью!Спасибо

1 Ответ

1 голос
/ 15 марта 2019

Похоже, что ваш код RegEx на самом деле предназначен для VB.Net, а не VBA, приведенный ниже код заменяет пустые строки n на 1 в VBA.

Dim RE As Object: Set RE = CreateObject("VBScript.RegExp")

With RE
    .MultiLine = True
    .Global = True
    .Pattern = "(\r\n)+"

    resultString = .Replace(subjectString, vbCrLf)

    MsgBox resultString
End With

Конечно, если вытолько 2 пустых строк вы можете просто:

resultString = replace$(subjectString, vbcrlf & vbcrlf, vbcrlf)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...