Ваша проблема заключается в том, как вы пересобрали / объединили переменную temp
.Когда вы перебираете массив aryLines()
, вы никогда не добавляете новую строку.Рассмотрим код ниже:
Sub oneLineText()
Dim strSource As String
Dim aryLines() As String
Dim temp As String
strSource = "The dog jumped over the fence"
aryLines() = Split(strSource, " ")
For Each ele in aryLines
temp = temp & ele & " "
next ele
End Sub
Результат будет таким же, как и у источника.Теперь рассмотрим следующее:
Sub multiLineText()
Dim strSource As String
Dim aryLines() As String
Dim temp As String
strSource = "The dog jumped over the fence"
aryLines() = Split(strSource, " ")
For Each ele in aryLines
temp = temp & ele & vbNewLine
next ele
End Sub
В результате каждая строка будет содержать переменную ele
на новой строке.Как примечание, вы можете перебирать переменную с For Each
вместо For i = LBound(array) to UBound(array)
.Каждый раз, когда цикл повторяется, необходимо выполнить вычисления LBound()
и UBound()
.В зависимости от размера цикла это может привести к значительным накладным расходам на обработку, однако в более коротком цикле стоимость будет незначительной.
РЕДАКТИРОВАТЬ: Изменен sub oneLineText (), чтобы включать пробелы на основе комментария FreeMan.