Вставить разрыв строки перед определенным словом vba

#excel #vba #string #line-breaks

#excel #vba #строка #разрывы строк

Вопрос:

Возможно ли с помощью vba идентифицировать конкретное слово в обернутой текстовой ячейке; и вставить разрыв строки непосредственно перед этой конкретной работой, чтобы он оказался в следующей строке? Предположим, что слово, которое я пытаюсь переместить в следующую строку, — «блок»

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

 If instr(range a1:a,"block",1) then
   Chr(10)
  

Или что-то в этом роде. Не уверен, как будут выглядеть мои объявления.

Ответ №1:

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

Возможно, вам придется изменить ссылки на ячейки, но это должно помочь вам начать:

 Sub addLineBreak()

    Dim oldString As String
    Dim newString As String
    Dim brkString As String
    
    Dim strArray As Variant
    
    Dim i As Long
    
    ' Location of string to split
    oldString = Range("A1").Value
    
    ' Word to add line break before (lowercase)
    brkString = "block"
    
    strArray = Split(oldString, " ")
    
    For i = 0 To UBound(strArray)
        If LCase(strArray(i)) = brkString Then
            newString = newString amp; Chr(10) amp; strArray(i)
        Else
            newString = newString amp; " " amp; strArray(i)
        End If
                
    Next
    
    newString = Right(newString, Len(newString) - 1)
    
    ' Location to dump new string
    Range("A1").Value = newString
    
End Sub