Excel vba продолжение строки

Перенос части кода одного выражения 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

Получился следующий результат:

Результаты программного переноса текста на новую строку в ячейке и информационном окне MsgBox

Результат четырех переносов текста на новую строку

Как видно на изображении, ключевое слово «vbCr» не сработало в ячейке для переноса текста на другую строку, хотя сработало в информационном окне MsgBox.

Ключевые слова «vbCr» и «vbLf» я использовал исключительно для ознакомления, а на практике следует применять для переноса текста на новую строку – «vbCrLf» и «vbNewLine».

В VBA (и VB.NET) терминатор линии (возврат каретки) используется для сигнализации конца инструкции. Чтобы разбить длинные заявления на несколько строк, вам нужно

Используйте символ продолжения строки, который является символом подчеркивания (_), в тот момент, когда вы хотите, чтобы линия прерывалась. Подчеркиванием должно быть непосредственно предшествует пробел и сразу же следует ограничитель строки (возврат каретки).

(Из Как разбить и объединить выражения в коде)

Другими словами: всякий раз, когда интерпретатор встречается с последовательностью <space> _ <line terminator>, он игнорируется, и синтаксический анализ продолжается на следующей строке. Обратите внимание, что даже при игнорировании продолжение строки по-прежнему действует как разделитель токенов, поэтому оно не может использоваться, например, в середине имени переменной. Вы также не можете продолжать комментарий, используя символ продолжения строки.

Чтобы разбить оператор в вашем вопросе на несколько строк, вы можете сделать следующее:

U_matrix(i, j, n + 1) = _
     k * b_xyt(xi, yi, tn) / (4 * hx * hy) * U_matrix(i + 1, j + 1, n) + _
     (k * (a_xyt(xi, yi, tn) / hx ^ 2 + d_xyt(xi, yi, tn) / (2 * hx)))

(Ведущие пробелы игнорируются.)

Asked
9 years, 1 month ago

Viewed
3k times

How to write a string manipulation in multiple lines like this in VBA? ( » _» is not working here)

szStr= szStr & "1=" & szVar1 & ";50=" & szVar50 & _
                    ";79=" & szVar71 & ";7971=" & szVar7971 & _
                    ";7423=" & szVar7423 & ";9523=" szVar9523 & _
                    ";1138=" & szVar1138 & ";109=" & szVar109 & _
                    ";9526=" & szVar9526 & ";"

Passerby's user avatar

Passerby

9,6892 gold badges33 silver badges50 bronze badges

asked Mar 7, 2014 at 7:29

Nadaraj's user avatar

3

Using _ is correct, but you are missing an & between ";9523=" szVar9523. It should read:

szStr= szStr & "1=" & szVar1 & ";50=" & szVar50 & _
                    ";79=" & szVar71 & ";7971=" & szVar7971 & _
                    ";7423=" & szVar7423 & ";9523=" & szVar9523 & _
                    ";1138=" & szVar1138 & ";109=" & szVar109 & _
                    ";9526=" & szVar9526 & ";"

answered Mar 7, 2014 at 8:13

neelsg's user avatar

neelsgneelsg

4,7425 gold badges33 silver badges58 bronze badges

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 vbNewLine in VBA to add new lines

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 vbCrLF to add new lines in VBA

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:

Using vbCR to insert a new line in VBA

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!
vba save as

Learn More!

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.

  1. vbNewLine
  2. vbCrLf
  3. 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.

Понравилась статья? Поделить с друзьями:
  • Excel vba проверка ячейки на число
  • Excel vba проверка файла на открытие
  • Excel vba проверка строки на пустоту
  • Excel vba проверка содержимого ячейки
  • Excel vba проверка пустого значения