Home / VBA / How to Add a New Line (Carriage Return) in a String in VBA
In VBA, there are three different (constants) to add a line break.
- vbNewLine
- vbCrLf
- vbLf
vbNewLine
vbNewLine inserts a newline character that enters a new line. In the below line of code, you have two strings combined by using it.
Range("A1") = "Line1" & vbNewLine & "Line2"
When you run this macro, it returns the string in two lines.
It returns the character 13 and 10 (Chr(13) + Chr(10)). You can use a code in the following way as well to get the same result.
Range("A1") = "Line1" & Chr(13) & Chr(10) & "Line2"
But when you use vbNewLine you don’t need to use CHAR function.
vbCrLf
vbCrLf constant stands for Carriage Return and Line feed, which means Cr moves the cursor to the starting of the line, and Lf moves the cursor down to the next line.
When you use vbCrLf within two string or values, like, you have in the following code, it inserts a new line.
Range("A1") = "Line1" & vbCrLf & "Line2"
vbLf
vbLf constant stands for line feed character, and when you use it within two strings, it returns line feed character that adds a new line for the second string.
Range("A1") = "Line1" & vbLf & "Line2"
If you want to add a new line while using the VBA MsgBox you can use any of the above three constants that we have discussed.
MsgBox "Line1" & vbNewLine & "Line2"
MsgBox "Line1" & vbCrLf & "Line2"
MsgBox "Line1" & vbLf & "Line2"
There’s also a constant vbCr that returns carriage return character that you can use to insert a new line in a message box.
MsgBox "Line1" & vbCr & "Line2"
vbCr won’t work if you want to enter a cell value until you apply wrap text to it.
Перенос части кода одного выражения VBA Excel на другую строку. Объединение нескольких операторов в одной строке. Программный перенос текста на новую строку.
Обратите внимание, что в этой статье слова «оператор» и «выражение» употребляются в одном значении. Они обозначают минимальный исполняющийся код VBA, расположенный в одной строке.
‘Каждая строка — один ‘оператор/выражение Dim a As Long, b As Long a = 12 b = a + 25 |
Перенос части выражения на новую строку
Деление длинного оператора на части улучшит его читаемость, сделает код процедуры более наглядным и компактным, не позволит ему уходить за пределы видимого экрана справа.
Переносимые на новые строки части кода одного выражения разделяются символом нижнего подчеркивания (_), который ставится обязательно после пробела. Этот символ указывает компилятору VBA Excel, что ниже идет продолжение текущей строки.
Пример 1
Процедуры без переноса и с переносом части кода операторов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
‘Процедура без переноса ‘кода операторов Sub Primer_1_1() Dim a As Long, b As Long a = 12 * 7 — 15 / 5 + 36 b = a + 25 + 36 * 15 — 5 MsgBox b End Sub ‘Процедура с переносом ‘кода операторов Sub Primer_1_2() Dim a As Long, _ b As Long a = 12 * 7 — 15 _ / 5 + 36 b = a + 25 + 36 _ * 15 — 5 MsgBox b End Sub |
Вы можете скопировать код Примера 1 и проверить его работоспособность. В обоих случаях информационное окно MsgBox покажет одинаковый результат.
Иногда пишут, что для переноса кода добавляется пробел с символом подчеркивания. Так легче запомнить и не забыть, что перед знаком подчеркивания обязательно должен быть пробел. Но на самом деле, как видите из примера выше, пробелы уже есть в исходном коде, и мы добавили только символы подчеркивания.
Объединение операторов в одной строке
Множество коротких выражений в коде VBA Excel можно объединить в одной строке. Для этого используется символ двоеточия с пробелом «: », который указывает компилятору, что за ним идет следующий оператор.
Пример 2
Процедуры без объединения и с объединением операторов:
‘Процедура без объединения ‘операторов Sub Primer_2_1() Dim a As Long, b As Long, c As Long a = 12 b = a + 25 c = a * b MsgBox c End Sub ‘Процедура с объединением ‘операторов Sub Primer_2_2() Dim a As Long, b As Long, c As Long a = 12: b = a + 25: c = a * b: MsgBox c End Sub |
Во втором примере, как и в первом, информационное окно MsgBox покажет одинаковый результат.
Программный перенос текста на другую строку
Для программного переноса произвольного текста на новую строку в VBA Excel используются следующие ключевые слова:
- vbCr – возврат каретки;
- vbLf – перевод строки;
- vbCrLf – возврат каретки и перевод строки, аналог нажатия клавиши «Enter»;
- vbNewLine – новая строка.
Выражения «возврат каретки» и «перевод строки» идут от механических пишущих машин (печатных машинок).
Пример 3
Проверяем работоспособность перечисленных выше ключевых слов по программному переносу текста на новые строки в ячейке и информационном окне MsgBox:
Sub Primer_3() ‘Перенос текста в ячейке Range(«B2») = «Первая строка + vbCr» & vbCr & _ «Вторая строка + vbLf» & vbLf & _ «Третья строка + vbCrLf» & vbCrLf & _ «Четвертая строка + vbNewLine» & vbNewLine & _ «Пятая строка» ‘Перенос текста в информационном окне MsgBox «Первая строка + vbCr» & vbCr & _ «Вторая строка + vbLf» & vbLf & _ «Третья строка + vbCrLf» & vbCrLf & _ «Четвертая строка + vbNewLine» & vbNewLine & _ «Пятая строка» End Sub |
Получился следующий результат:
Результат четырех переносов текста на новую строку
Как видно на изображении, ключевое слово «vbCr» не сработало в ячейке для переноса текста на другую строку, хотя сработало в информационном окне MsgBox.
Ключевые слова «vbCr» и «vbLf» я использовал исключительно для ознакомления, а на практике следует применять для переноса текста на новую строку – «vbCrLf» и «vbNewLine».
Return to VBA Code Examples
When working with strings in VBA, use vbNewLine, vbCrLf or vbCR to insert a line break / new paragraph.
This article will also discuss how to use use the line continuation character in order to continue a statement in your actual VBA code on a new line.
Using vbNewLine
The following code shows you how you would use vbNewLine in order to put the second text string on a new line in the Immediate window:
Sub UsingvbNewLine()
Dim StringOne As String
Dim StringTwo As String
StringOne = "This is String One"
StringTwo = "This is String Two"
Debug.Print StringOne & vbNewLine & StringTwo
End Sub
The result is:
Using vbCrLf
The following code shows you how you would use vbCrLf in order to put the second text string on a new line in a shape:
Sub UsingvbCrLf()
Dim StringOne As String
Dim StringTwo As String
StringOne = "This is String One"
StringTwo = "This is String Two"
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 15, 15, 100, 50).Select
With Selection
.Characters.Text = StringOne & vbCrLf & StringTwo
End With
End Sub
The result is:
Using vbCR
The following code shows you how you would use vbCR in order to put the second text string on a new line in a message box:
Sub UsingvbCR()
Dim StringOne As String
Dim StringTwo As String
StringOne = "This is String One"
StringTwo = "This is String Two"
MsgBox StringOne & vbCr & StringTwo
End Sub
The result is:
Continuing a Statement in VBA
You can use the line continuation character (“_” aka the underscore) to continue a statement from one line to the next in your VBA code. The following code shows you how to use the line continuation character:
Sub LineContinuation ()
If Range("b1").Value > 0 Then _
Range("c1").Value = "Greater Than Zero"
End Sub
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!
Илья Пользователь Сообщений: 6 |
С помощью VBA формирую текстовый файл (для загрузки в InDesign) |
Ігор Гончаренко Пользователь Сообщений: 13746 |
#2 09.12.2022 14:03:42
допустим CHR(10) и vbLf — это одно и тоже Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
Илья Пользователь Сообщений: 6 |
vbNewLine vbCrLf …не помню точно |
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Илья, пробуйте vbCrLf = vbNewLine = Chr(13) & Chr(10) Изменено: Jack Famous — 09.12.2022 14:24:17 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Илья Пользователь Сообщений: 6 |
#5 09.12.2022 14:54:25
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств )))) |
||
Илья Пользователь Сообщений: 6 |
Все эти варианты дают в текстовом файле конец абзаца. Почему вопрос странный? Если в текстовом файле нужен символ — перенос строки — для правильного форматирования текста. |
Илья Пользователь Сообщений: 6 |
Помогло: Chr(12) & Chr(10) |
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Илья, цитата моей подписи неуместна, так как вы ничего нового не выяснили (для меня) и перенос строки (как и раньше) это vbLf, который на листе Excel не существует без каретки vbCr (она добавится «сама»). Никакого конца строки без её переноса, у меня не было и нет. Юникод сообщает, что символы 11 и 12 это вертикальная табуляция и смена страницы соответственно. Концом строки и не пахнет, как видите… Изменено: Jack Famous — 09.12.2022 15:36:02 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Илья Пользователь Сообщений: 6 |
#9 14.12.2022 13:03:07
Извините, неудачно пошутил. Ничего дурного не имел ввиду. |
||
Часто требуется внутри одной ячейки Excel сделать перенос текста на новую строку. То есть переместить текст по строкам внутри одной ячейки как указано на картинке. Если после ввода первой части текста просто нажать на клавишу ENTER, то курсор будет перенесен на следующую строку, но другую ячейку, а нам требуется перенос в этой же ячейке.
Это очень частая задача и решается она очень просто — для переноса текста на новую строку внутри одной ячейки Excel необходимо нажать ALT+ENTER (зажимаете клавишу ALT, затем не отпуская ее, нажимаете клавишу ENTER)
Как перенести текст на новую строку в Excel с помощью формулы
Иногда требуется сделать перенос строки не разово, а с помощью функций в Excel. Вот как в этом примере на рисунке. Мы вводим имя, фамилию и отчество и оно автоматически собирается в ячейке A6
Для начала нам необходимо сцепить текст в ячейках A1 и B1 (A1&B1), A2 и B2 (A2&B2), A3 и B3 (A3&B3)
После этого объединим все эти пары, но так же нам необходимо между этими парами поставить символ (код) переноса строки. Есть специальная таблица знаков (таблица есть в конце данной статьи), которые можно вывести в Excel с помощью специальной функции СИМВОЛ(число), где число это число от 1 до 255, определяющее определенный знак.
Например, если прописать =СИМВОЛ(169), то мы получим знак копирайта ©
Нам же требуется знак переноса строки, он соответствует порядковому номеру 10 — это надо запомнить.
Код (символ) переноса строки — 10
Следовательно перенос строки в Excel в виде функции будет выглядеть вот так СИМВОЛ(10)
Примечание: В VBA Excel перенос строки вводится с помощью функции Chr и выглядит как Chr(10)
Итак, в ячейке A6 пропишем формулу
=A1&B1&СИМВОЛ(10)&A2&B2&СИМВОЛ(10)&A3&B3
В итоге мы должны получить нужный нам результат.
Обратите внимание! Чтобы перенос строки корректно отображался необходимо включить «перенос по строкам» в свойствах ячейки.
Для этого выделите нужную нам ячейку (ячейки), нажмите на правую кнопку мыши и выберите «Формат ячеек…»
В открывшемся окне во вкладке «Выравнивание» необходимо поставить галочку напротив «Переносить по словам» как указано на картинке, иначе перенос строк в Excel не будет корректно отображаться с помощью формул.
Как в Excel заменить знак переноса на другой символ и обратно с помощью формулы
Можно поменять символ перенос на любой другой знак, например на пробел, с помощью текстовой функции ПОДСТАВИТЬ в Excel
Рассмотрим на примере, что на картинке выше. Итак, в ячейке B1 прописываем функцию ПОДСТАВИТЬ:
=ПОДСТАВИТЬ(A1;СИМВОЛ(10);" ")
A1 — это наш текст с переносом строки;
СИМВОЛ(10) — это перенос строки (мы рассматривали это чуть выше в данной статье);
» » — это пробел, так как мы меняем перенос строки на пробел
Если нужно проделать обратную операцию — поменять пробел на знак (символ) переноса, то функция будет выглядеть соответственно:
=ПОДСТАВИТЬ(A1;" ";СИМВОЛ(10))
Напоминаю, чтобы перенос строк правильно отражался, необходимо в свойствах ячеек, в разделе «Выравнивание» указать «Переносить по строкам».
Как поменять знак переноса на пробел и обратно в Excel с помощью ПОИСК — ЗАМЕНА
Бывают случаи, когда формулы использовать неудобно и требуется сделать замену быстро. Для этого воспользуемся Поиском и Заменой. Выделяем наш текст и нажимаем CTRL+H, появится следующее окно.
Если нам необходимо поменять перенос строки на пробел, то в строке «Найти» необходимо ввести перенос строки, для этого встаньте в поле «Найти», затем нажмите на клавишу ALT, не отпуская ее наберите на клавиатуре 010 — это код переноса строки, он не будет виден в данном поле.
После этого в поле «Заменить на» введите пробел или любой другой символ на который вам необходимо поменять и нажмите «Заменить» или «Заменить все».
Кстати, в Word это реализовано более наглядно.
Если вам необходимо поменять символ переноса строки на пробел, то в поле «Найти» вам необходимо указать специальный код «Разрыва строки», который обозначается как ^l
В поле «Заменить на:» необходимо сделать просто пробел и нажать на «Заменить» или «Заменить все».
Вы можете менять не только перенос строки, но и другие специальные символы, чтобы получить их соответствующий код, необходимо нажать на кнопку «Больше >>», «Специальные» и выбрать необходимый вам код. Напоминаю, что данная функция есть только в Word, в Excel эти символы не будут работать.
Как поменять перенос строки на пробел или наоборот в Excel с помощью VBA
Рассмотрим пример для выделенных ячеек. То есть мы выделяем требуемые ячейки и запускаем макрос
1. Меняем пробелы на переносы в выделенных ячейках с помощью VBA
Sub ПробелыНаПереносы()
For Each cell In Selection
cell.Value = Replace(cell.Value, Chr(32), Chr(10))
Next
End Sub
2. Меняем переносы на пробелы в выделенных ячейках с помощью VBA
Sub ПереносыНаПробелы()
For Each cell In Selection
cell.Value = Replace(cell.Value, Chr(10), Chr(32))
Next
End Sub
Код очень простой Chr(10) — это перенос строки, Chr(32) — это пробел. Если требуется поменять на любой другой символ, то заменяете просто номер кода, соответствующий требуемому символу.
Коды символов для Excel
Ниже на картинке обозначены различные символы и соответствующие им коды, несколько столбцов — это различный шрифт. Для увеличения изображения, кликните по картинке.
Источник.