#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