Макрос следующая строка excel

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.

 

axelfrog

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

Извиняюсь за элементарный вопрос  
выбирается определенная ячейка  
Например  
Range(«I12»).Activate  
необходимо в цикле переходить по строкам вниз выполняя или не выполняя выражение  
делема в переходе на следующую строку, не могу выяснить синтаксис    
книги нет, help понять не могу  

  также буду весьма благодарен за полезную ссылку описания всех функций и процедур VBA

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Посмотрите мой простенький мамкрос в соседней теме: 

http://www.planetaexcel.ru/forum.php?thread_id=18859

<BR>Только выделять ячейки без необходимости не следует — сильно падает скорость.

 

Лучше не активировать ячейки вообще, т.е. не использовать Activate и Select  

  Sub Test()  
Dim iRow As Long  
  For iRow = 12 To 20  
     Cells(iRow, «I») = 1  
  Next iRow  
End Sub

 

axelfrog

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

{quote}{login=}{date=04.09.2010 06:45}{thema=}{post}Лучше не активировать ячейки вообще, т.е. не использовать Activate и Select  

  Sub Test()  
Dim iRow As Long  
  For iRow = 12 To 20  
     Cells(iRow, «I») = 1  
  Next iRow  
End Sub{/post}{/quote}  

  Щас попробую данный вариант.  
А почему лучше не использовать Activate и Select

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Я же выше написал — падает скорость. Да ещё и экран дёргается.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Вам же написали — сильно тормозит. Да и не нужно. Или вы любите мультики:-)?

Я сам — дурнее всякого примера! …

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Юрий, мож поделитесь со мной Вашим генератором ответов? А то вручную лень набирать:-) Зрение тормозит…

Я сам — дурнее всякого примера! …

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

По воду генератора к Диме :-)

 

axelfrog

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

{quote}{login=axelfrog}{date=04.09.2010 06:48}{thema=Re: }{post}{quote}{login=}{date=04.09.2010 06:45}{thema=}{post}Лучше не активировать ячейки вообще, т.е. не использовать Activate и Select  

  Sub Test()  
Dim iRow As Long  
  For iRow = 12 To 20  
     Cells(iRow, «I») = 1  
  Next iRow  
End Sub{/post}{/quote}  

  Щас попробую данный вариант.  

      Огромное человеческое спасибо!  
Необходимый синтаксис выявил )    

  Просто без хорошей книги, на элементарные вещи уходит уйма времени.  
Я вообще по образованию программер, но так не нравится программировать, работаю не по специальности, дабы облегчить рабочий процесс приходится садиться и вспоминать что как да к чему))    

  А почему лучше не использовать Activate и Select{/post}{/quote}

 

axelfrog

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

{quote}{login=}{date=04.09.2010 06:45}{thema=}{post}Лучше не активировать ячейки вообще, т.е. не использовать Activate и Select  

  Sub Test()  
Dim iRow As Long  
  For iRow = 12 To 20  
     Cells(iRow, «I») = 1  
  Next iRow  
End Sub{/post}{/quote}  

      Огромное человеческое спасибо!  
Необходимый синтаксис выявил )  

  Просто без хорошей книги, на элементарные вещи уходит уйма времени.  
Я вообще по образованию программер, но так не нравится программировать, работаю не по специальности, дабы облегчить рабочий процесс приходится садиться и вспоминать что как да к чему))    

  Сори промахнулся

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

axelfrog, вот для наглядности. Попробуем закрасить 10 000 ячеек в столбце А.  
Макрос, где ячейки выделяются:  
Sub С_выделениемЯчеек()  
a = Timer  
For i = 1 To 10000  
Cells(i, 1).Select  
Cells(i, 1).Interior.ColorIndex = 6  
Next  
MsgBox Timer — a  
End Sub  
Запомните время, а теперь тоже самое, но не выделяя ячейки:  
Sub Без_выделенияЯчеек()  
a = Timer  
For i = 1 To 10000  
Cells(i, 1).Interior.ColorIndex = 6  
Next  
MsgBox Timer — a  
End Sub  
Есть разница?

 

axelfrog

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

{quote}{login=Юрий М}{date=04.09.2010 07:04}{thema=}{post}axelfrog, вот для наглядности. Попробуем закрасить 10 000 ячеек в столбце А.  
Макрос, где ячейки выделяются:  
Sub С_выделениемЯчеек()  
a = Timer  
For i = 1 To 10000  
Cells(i, 1).Select  
Cells(i, 1).Interior.ColorIndex = 6  
Next  
MsgBox Timer — a  
End Sub  
Запомните время, а теперь тоже самое, но не выделяя ячейки:  
Sub Без_выделенияЯчеек()  
a = Timer  
For i = 1 To 10000  
Cells(i, 1).Interior.ColorIndex = 6  
Next  
MsgBox Timer — a  
End Sub  
Есть разница?{/post}{/quote}  

  само собой, я же говорю, что приходится просто методом проб и ошибок вычислять ту или иную функцию (

 

axelfrog

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

{quote}{login=Юрий М}{date=04.09.2010 06:50}{thema=}{post}Я же выше написал — падает скорость. Да ещё и экран дёргается.{/post}{/quote}  

  Как сделать задержку в цикле 30сек.?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Или: «Для того, чтобы приостановить выполнение макроса на определённое время, достаточно использовать метод Wait об’екта Application. Далее следуют пять примеров, которые могут остановить выполнение макроса на десять секунд»  
Application.Wait Time:=DateAdd(«s», 10, Now)    
Application.Wait Time:=Now + #12:00:10 AM#    
Application.Wait Time:=Now + 10 / 86400    
Application.Wait Time:=Now + TimeSerial(0, 0, 10)    
Application.Wait Time:=Now + TimeValue(«0:00:10»)

 

axelfrog

Пользователь

Сообщений: 16
Регистрация: 01.01.1970

{quote}{login=Юрий М}{date=04.09.2010 07:42}{thema=}{post}Или: «Для того, чтобы приостановить выполнение макроса на определённое время, достаточно использовать метод Wait об’екта Application. Далее следуют пять примеров, которые могут остановить выполнение макроса на десять секунд»  
Application.Wait Time:=DateAdd(«s», 10, Now)    
Application.Wait Time:=Now + #12:00:10 AM#    
Application.Wait Time:=Now + 10 / 86400    
Application.Wait Time:=Now + TimeSerial(0, 0, 10)    
Application.Wait Time:=Now + TimeValue(«0:00:10»){/post}{/quote}  

  Большое спасибо )

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

Ну и для полноты:  
Declare Sub Sleep Lib «kernel32» (ByVal milliseconds As Long)  
Sub tt()  
MsgBox 1  
Sleep 3000  
MsgBox 2  
End Sub  

  3000 — это миллисекунды.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

{quote}{login=axelfrog}{date=04.09.2010 07:01}{thema=Re: }{post}{quote}{login=}{date=04.09.2010 06:45}{thema=}  
Я вообще по образованию программер, но так не нравится программировать, работаю не по специальности{/post}{/quote}  
Прикольно, особенно мне:-) Я сварщик. Работаю по специальности.

Я сам — дурнее всякого примера! …

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Беда с этими цитатами.  
«Я вообще по образованию программер, но так не нравится программировать, работаю не по специальности»  
Прикольно, особенно мне:-) Я сварщик. Работаю по специальности.

Я сам — дурнее всякого примера! …

 

{quote}{login=KuklP}{date=04.09.2010 10:02}{thema=}{post}Беда с этими цитатами.  
«Я вообще по образованию программер, но так не нравится программировать, работаю не по специальности»  
Прикольно, особенно мне:-) Я сварщик. Работаю по специальности.{/post}{/quote}  

  Дела..  
Я тоже сварщик, и причем не плохой. А работаю не по специальности программером ))

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

#21

22.08.2011 15:30:36

Интересно тема всплыла…  
Уже не потому ли, что я недавно упомянул специальность «сварщик»? :)

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

​Смотрите также​i_n = Worksheets(«Специалисты»).Cells(Rows.Count,​ не работает, сам​N = SRng.Rows.Count​Cheshir0067​ а что-то осваивать​: К сожалению не​End If aws.Rows(i).Delete​ что бы данные​excel_pl​

​ = 1 To​ ‘отключаем стандартное предупреждение​ печати цветных фотографий.»​ конце строки, если​ выдаёт ошибку. Очень​Ещё один способ сделать​ As Integer ‘​Начиная практиковаться в написании​ «A»).End(xlUp).Row​ сталкивался… это связано​Vs = SRng.Value​: Имхо всё не​ заново. В любом​ пойму, перед?​ ws.Cells(Rows.Count, 1).End(xlUp).Offset(1) End​ копировались на другие​: Вопрос решён.​ SearchRange.Cells.Count If SearchRange.Cells(i)​ о потере текста​ & vbLf &​ текс длинный и​ неудобно.​

​ код более читаемым​ переменная типа Integer​ кода VBA, очень​For i=1 to​ именно, что Вы​ReDim SArr(1 To​

Комментарии в VBA

​ так страшно:​ случае вам огромное​For i =​ If aws.Rows(i).Copy ws.Cells(Rows.Count,​ листы в зависимости​Всем спасибо.​ Like Condition Then​.Merge Across:=False ‘объединяем​ _ «Недостатки. В​ не помещается в​Мне желательно в​

​ и облегчить работу​ для цикла ‘For’​ важно с самого​ i_n​ пытаетесь вставить данные​ N)​Самое главное определиться​ спасибо за помощь!​ aws.Cells(Rows.Count, j)​ 1).End(xlUp).Offset(1) End If:​ от категории, например​zhmerin​ OutText = OutText​ ячейки​ большинстве случаев струйные​ одной строке?​

​ данной программе перенести​ с ним –​ Dim iRowNumber As​​ начала выработать хорошие​​ComboBox1.AddItem Worksheets(«Специалисты»).Cells(i, «A»).Value​

​ через Range, но​ReDim Arrr(N -​ с размером и​Burk​Burk​ Next​ вносим мы в​: Добрый день.​ & TextRange.Cells(i) &​Application.DisplayAlerts = True​ принтеры работают медленнее​что б было​ строки, где задаются​ делать переносы и​ Integer ‘ переменная​ привычки в оформлении​ComboBox2.AddItem Worksheets(«Специалисты»).Cells(i, «B»).Value​ Range, который на​ 1)​ шрифтом чтобы влазил​:​:​Burk​ таблицу тетрациклин, в​На форумах видел​ Delimeter Next i​.Item(1).Value = Mid(sMergeStr,​ (в страницах в​ понятнее: Private Sub​ данные (вторая строка)​ разбивать одну длинную​ типа Integer для​ кода, чтобы в​ ‘ если для​ другом, неактивном листе.​For R =​ в ячейку и​Lofak​Lofak​:​ разделе категория указываем​ много инфы и​ ‘выводим результаты без​ 1 + Len(sDELIM))​ минуту), чем лазерные​ Command2_Click() a =​ и переносить строки,​ строку кода на​

​ хранения результата iRowNumber​ дальнейшем написанный код​ столбцов «А» и​Roman777​ 1 To N​ задать конечное колличество​, понял, обращайтесь.​, НУ ЭТО УЖ​Lofak​ что он антибиотик,​ вариантов переноса строк,​

​ последнего разделителя MergeIf​ ‘добавляем к объед.ячейке​ принтеры, и требуют​ MsgBox(«Г‘òðóéГ*ûå ïðèГ*òåðû ГЇГҐГ·Г*ГІГ*ГѕГІ​ где If, там​ несколько коротких. В​ = 0 ‘​ было легко читать​ «B» данные лежат​:​

Отступы в коде VBA

​Sentence = Vs(R,​ символов (ограничение) для​combat​ КУ-КУ. Перед это​, ну, конечно, перед​ следовательно вся строка​ однако, всё попытки​ = Left(OutText, Len(OutText)​​ суммарный текст​​ регулярной замены картриджа​ ГІГҐГЄГ±ГІ ГЁ èçîáðГ*æåГ*ГЁГї,​ стоит AND и​ VBA, чтобы разбить​ последовательно посматриваем ячейки​ и понимать, как​ в одних и​combat​

Переносы строк в VBA

​ 1)​ показа в первой​: Всем доброго времени​ не внутрь строки​ копированием поставить чистку.​ переносится на лист​ заставляют VBA ругаться.​ — Len(Delimeter)) End​End With​ с чернилами», ,​ Г°Г*çáðûçãèâГ*Гї Г*Г* ГЎГіГ¬Г*ГЈГі​ у м меня​ строку, нужно вставить​ A1-A100, пока не​ он работает.​ тех же строках,​, кстати, вчера потом​

​SArr(R) = «​ ячейке.​ суток, помогите решить​ кода, а перед​ Только надо активировать​ 2, в антибиотики.​

​Нужно перенести часть​​ Function​​End Sub​

​ «Справка») End Sub​ ìåëêèå ГЄГ*ïëè Г·ГҐГ°Г*ГЁГ«.​ будет много «AND»​ символы » _»​ будет найдено значение​В процессе написания кода,​ иначе надо делать​ ток сообразил, что​ » & Replace(Sentence,​Пример берёт колличество​ задачу​

​ ней. Как мне​ страницу , на​​ Вносим витамин, переносится​​ кода, который выполняет​Сцепка происходит по​

​А как сделать​tarakano​ ÑòðóéГ*ûå ïðèГ*òåðû ïîïóëÿðГ*Г»​ и много «OR»​ (пробел+подчёркивание) непосредственно перед​ ‘sFindText’ For i​ программист может иметь​ второй цикл, как​ Ваш вариант тоже​ «»»», «»)​ символов из ячейки​прошелся по ветке​

​ кажется, перенос осуществляется​​ которую пойдёт запись,​​ на лист 3​ SQL запрос. Пробовал​ принципу:​ чтобы место пробела​: спасибо за оба​ ГЁГ§-Г§Г* îòГ*îñèòåëüГ*Г® Г*åâûñîêîé​ и хотел бы​ переносом строки. Это​ = 1 To​ совершенно чёткое представление​ вы делали выше.​ скорее всего рабочий,​

​ListBox1.AddItem R​ BB15 и разбрасывает​
​ www.excelworld.ru/forum/2-890-1 ничего для​
​ не AWS а​

​ либо проще ws.rows.delete​

office-guru.ru

Перенос строки в коде. Макросы

​ витамины.​​ как только можно,​
​Текст 1, Текст​ в строке​ способа, теперь буду​ öåГ*Г». Ñóùåñòâóåò Г¬Г*îæåñòâî​ каждое условие в​
​ сообщает компилятору VBA,​ 100 If Cells(i,​ о том, что​Next i​ просто Вы забыли​ListBox1.List(R — 1,​ по строкам.​ себя не взял,​ WS​ ведь ws у​Lofak​ но ничего не​ 2​Const sDELIM As​ знать​ ìîäåëåé ГІГ*ГЄГЁГµ ïðèГ*òåðîâ,​ отдельную строку записывать,​ что текущая строка​ 1).Value = sFindText​ за код он​RAN​ сказать, с какого​ 1) = Sentence​В Вашем примере​ все не то​WS.rows.delete For i​ вас лист, в​: Пример таблицы во​ выходит.​Вопрос​ String = «​Тогда еще один:​ âêëþ÷Г*Гї ìîäåëè, ñïåöèГ*ëüГ*Г®​ а не в​ кода продолжается на​ Then ‘ найдено​ пишет и как​: Мууученики!​ листа берёте ячейки:​Arrr(R — 1)​ надо заменить в​на моём примере,​

​ = aws.Cells(Rows.Count, j).End(xlUp).Row​​ который идет перенос?​ вложениях​
​Ниже пример запроса,​Как сделать чтобы​ » ‘символ-разделитель​Private Sub Command2_Click()​ ïðåäГ*Г*Г§Г*Г*Г·ГҐГ*Г*ûå äëÿ ГЇГҐГ·Г*ГІГЁ​

​ одну длинную. Public​​ следующей строке.​ совпадение с переданной​ этот код должен​200?’200px’:»+(this.scrollHeight+5)+’px’);»>With Worksheets(«Специалисты»)​200?’200px’:»+(this.scrollHeight+5)+’px’);»>ComboBox1.List = Worksheets(«Специалисты»).Range(«A1», Worksheets(«Специалисты»).Cells(Rows.Count,​

​ = R​​ Private Sub ListBox1_Change():​ и по моему​ To 2 Step​

​ Ну и его​​Прошу по возможности​ подскажите, как можно​ разделитель был не​вставлялся символ переноса​ Dim St as​ öâåòГ*ûõ ôîòîãðГ*ГґГЁГ©. ÍåäîñòГ*ГІГЄГЁ.​ Sub Delete_Privetik() Dim​Следующий пример демонстрирует, как​ строкой ‘ сохраняем​

​ работать. Но нужно​​ComboBox1.List = .Range(.Cells(1,»A»),​ «A»).End(xlUp)).Value​

planetaexcel.ru

Перенос длинных строк в редакторе кода

​Next​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​ шаблону как корректно​ -1​ надо поставить до​ помочь реализовать​ перенести строку? varSQL​
​ «, «, а​ строки?​ String St =​ Г‚ áîëüøèГ*Г±ГІГўГҐ ñëó÷Г*ГҐГў​ b As Range,​ при помощи переносов​ номер текущей строки​ позаботиться и о​ .Cells(.Rows.Count, «A»).End(xlUp)).Value​combat​Lbl_SI.Caption = «Всего​Worksheets(«РСИ»).Cells(3, 55) =​ переносить текст по​Lofak​ цикла по I​unick12345​ = «select codact,​ перенос текста на​anvg​ «Струйные принтеры печатают​ ñòðóéГ*ûå ïðèГ*òåðû Г°Г*áîòГ*ГѕГІ​ c As Range,​ строк можно сделать​ и выходим из​ том, чтобы, вернувшись​ComboBox2.List = .Range(.Cells(1,​: Роман, я не​ СИ в базе​

​ Lbl.Caption​​ строкам шаблона​: Да, я так​Lofak​: переносится или копироваться?​ codpro, ds1pro _​ следующую строчку?​: В Excel для​ текст и изображения,​ ìåäëåГ*Г*ГҐГҐ (Гў Г±ГІГ°Г*Г*ГЁГ¶Г*Гµ​ d As Range,​ длинные строки кода​ цикла iRowNumber =​ к работе спустя​ 2), .Cells(.Rows.Count, 2).End(xlUp)).Value​ сомневался, что Вы​ » & «​На:​в первых двух​ и имел ввиду,​: Вот так?​Lofak​ from fge50fmddk.gepro where​Т.е., чтобы сцепка​ Range можно использовать​ разбрызгивая на бумагу​ Гў ìèГ*ГіГІГі), Г·ГҐГ¬​ LastRow As Long,​ гораздо более понятными​ i Exit For​ полгода, не пришлось​

​End With​​ мне очередной раз​ » & N​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>​ строках применены формулы,​ но в таком​Sub Main() Dim​: Копироваться​ codact = ‘U20′»​ происходила по принципу:​ 2 типа символа-переноса​ мелкие» & vbNewLine​ Г«Г*çåðГ*ûå ïðèГ*òåðû, ГЁ​ r As Long​ и легко читаемыми.​ End If Next​ ломать голову, пытаясь​Roman777​ поможете, и еще​ & » ед.»​numb = Worksheets(«РСИ»).Cells(15,​ с «ручной» настройкой​ случае выпадает ошибка,​ i As Long,​Нашел скрипт, который​Андрей VG​

​Текст 1​​ строки vbLf и​ St = St​ òðåáóþò ðåãóëÿðГ*îé Г§Г*ìåГ*Г»​

​ On Error Resume​
​Посмотрите на этот оператор​ i ‘ сообщение​ понять, что должен​:​ раз вам большое​’ComboBox1.List = Worksheets(«Специалисты»).Range(«A1″,​ 54)’ Считаем колличество​ кол-ва символов (регулятор​ что переменная не​ j As Integer,​ выполняет необходимую мне​: Доброе время суток.​Текст 2​ vbNewLine​ + » капли​ ГЄГ*ðòðèäæГ* Г± Г·ГҐГ°Г*ГЁГ«Г*ìè»,​ Next Set b​If​ во всплывающем окне​ делать этот код.​RAN​ спасибо​ Cells(Rows.Count, «A»).End(xlUp)).Value​ символов к отображению​ первой строки)​ задана:​ ws As Worksheet,​ функцию, но при​VBA строково зависимый​Sanja​андрей​ чернил. Струйные принтеры​ ,»Г‘ГЇГ°Г*ГўГЄГ*») End Subтекс​ = Range(«g2:g2500»).Cells Set​:​ сообщает пользователю, ‘​

CyberForum.ru

Символ переноса в VBA

​ Ещё более неприятная​​, Вы правы…) Почему-то​
​работает только первый​’ComboBox2.List = Worksheets(«Специалисты»).Range(«B1»,​
​Worksheets("РСИ").Cells(15, 13).FormulaR1C1 =​
​в других строках​Burk​ aws As Worksheet,​
​ каждом запуске копирует​ язык, поэтому​
​: Function MergeIf(TextRange As​: Если vbLf или​
​ популярны из-за относительно​ в msgbox длинный​ c = Range("bi2:bi2500").Cells​If (index =​ найдена ли строка,​
​ ситуация – когда​
​ сразу в глаза​ вариант, при втором​
​ Cells(Rows.Count, "B").End(xlUp)).Value​ Left(Lbl.Caption, numb)' Записываем​ текст может уходить​:​
​ x As Range​
​ все строки, в​varSQL = "select​ Range, SearchRange As​
​ vbNewLine подставить в​ невысокой цены. Существует​
​ и не помещается​
​ On Error GoTo​ 1 And sColor1​ и если найдена​ кто-то другой станет​
​ не бросилось)​
​ дает ошибку на​

​End Sub​ numb символов с​ за границы диапазона​
​Lofak​ Set x =​ том числе те,​
​ codact, codpro, ds1pro»​ Range, Condition As​

​ макрос. то эти​​ » & vbNewLine​ в одну строку,​ 0 If b​ = «красный») Or​ – сообщает номер​

​ продолжать Вашу работу​​combat​ запуск формы 2​тот код который​ лева в первую​ объединённых ячеек​

​, я вам написал​​ Rows(1).Find(«Садовник», , ,​ которые уже скопировал​
​ _ & "from​ String) Dim i​

​ символы появляются в​​ St = St​

excelworld.ru

Перенос строки кода, используя нижнее подчеркивание

​ как разделить его​​ Is Nothing Then​ (index = 2​ строки If iRowNumber​ над кодом и​, Советую всё-таки, вопросы,​
​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Dim i As Variant​ отключен, в самом​ ячейку​
​при перемещении по​

​ ответ на вопрос​ xlWhole) If x​ ранее​

CyberForum.ru

Как сделать перенос строки с использованием VBA?

​ fge50fmddk.gepro where codact​​ As Long ‘если​ ячейках склеенных​ + «множество моделей​ на 2 -​ Exit Sub Else​ And sColor1 =​ = 0 Then​ не сможет понять,​ не относящиеся к​For i =​ конце​Worksheets(«РСИ»).Cells(17, 1) =​ листбоксу, если сдвинуть​ о чистке листа.​ Is Nothing Then​Sub Main() Dim​ = ‘U20′»​ диапазоны проверки и​Serge_007​ таких принтеров, включая​ 3 строки?​ LastRow = b.Rows.Count​ «синий») Or (index​ MsgBox «Строка «​ как он работает.​ самой теме создавать​ 1 To Worksheets(«Специалисты»).Cells(Rows.Count,​combat​ Right(Lbl.Caption, Len(Lbl.Caption) -​ форму видно как​ В вашем коде​ Exit Sub Else​ i As Long,​Как в VBA перейти​ склеивания не равны​: А если попробовать,​ модели, специально предназначенные​
​gaw​ LastRow = LastRow​
​ = 3 And​ & sFindText &​
​Эта статья посвящена комментариям,​
​ в отдельной теме.​ «A»).End(xlUp).Row​: Как заставить работать​ numb)’ Забираем оставшиеся​ распределяется текст в​
​ до оператора чистки​ j = x.Column​
​ j As Integer,​
​ на новую строку​

​ друг другу -​​ прежде чем писать?​ » & vbNewLine​: Private Sub Command2_Click()​ + b.Row -​ sColor1 = «зеленый»)​ » не найдена»​ отступам в коде​ Ибо правила…​ComboBox1.AddItem Worksheets(«Специалисты»).Cells(i, «A»).Value​ ComboBox на форме,​ символы во вторую​ первых двух строках​ надо установить значение​ Application.ScreenUpdating = False:​ ws As Worksheet,​ в TextBox? Например,​ выходим с ошибкой​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Const sDELIM As String​ St = St​ a = MsgBox(«Струйные​ 1 Application.ScreenUpdating =​ Or (index =​ Else MsgBox «Строка​ и переносам строк​А по вопросу,​Next i​

​ беря данные с​​ ячейку​ и как он​ объекта set WS​ Set aws =​ aws As Worksheet,​

​ в строке​​ If SearchRange.Count <>​ = vbLf​ + «для печати​​ принтеры печатают текст​​ False For r​
​ 4 And sColor1​ » & sFindText​​ – элементам, которые​​ я бы на​

​For i =​​ листа в книге,​combat​

​ не умещается в​​ = какой-то лист.​ Sheets(«Общая база») For​ x As Range​TextBox1.Text = «Максимальное​ TextRange.Count Then MergeIf​Андрей​

​ цветных фотографий.» &​​ и изображения, разбрызгивая​
​ = LastRow To​

planetaexcel.ru

Перенос строки кода в VBA

​ = «коричневый») Then​​ & » найдена​
​ делают код аккуратным​ Вашем месте поставил​ 1 To Worksheets(«Специалисты»).Cells(Rows.Count,​ а форма привязана​: Я пошел совсем​
​ других​Либо активировать НУЖНЫЙЛИСТ.ACTIVATE​ i = aws.Cells(Rows.Count,​ Set x =​ число = «​ = CVErr(xlErrRef) Exit​
​: СПАСИБО! Очень помогли!​ vbNewLine & vbNewLine​ на бумагу мелкие»​ b.Row Step -1​При помощи переносов строк​ в ячейке A»​ и понятным.​

​ название отдела напротив​​ «B»).End(xlUp).Row​
​ к др. листу,​ по другому пути,​
​как решить эту​ , потом Rows.delete​ j).End(xlUp).Row To 2​ Rows(1).Find(«Садовник», , ,​ & max &​

planetaexcel.ru

Перевод строки и возврат каретки в VBA

​ Function End If​abbat81​ St = St​ & vbNewLine &​
​ If Cells(r, b.Column).Value​ тот же оператор​ & iRowNumber End​Самое важное для написания​ каждого работника… А​ComboBox2.AddItem Worksheets(«Специалисты»).Cells(i, «B»).Value​
​ у меня по​ объединил строки нарисовал​ задачу без формул,​
​ и потом снова​ Step -1 If​

​ xlWhole) If x​​ » Минимальное число​
​ For i =​
​: Вопрос наверное очень​ + «Недостатки. В​ _ » капли​
​ = «14» And​If​
​ If End Sub​
​ аккуратного и понятного​

​ потом уже по​​Next i​ чему то не​ линии и вставил​

​ а макросами​​ перейти на лист​

​ aws.Cells(i, j) <>​​ Is Nothing Then​ = » &​
​ 1 To SearchRange.Cells.Count​ глупый, но раньше​ большинстве случаев струйные​ чернил. Струйные принтеры​ Cells(r, c.Column).Value =​может быть записан​

Перенос строк с условием

​Не расстраивайтесь, если какую-то​​ кода – чаще​ условию, при выборе​т.к. у меня​ работает​ label (подстрочный текст​Roman777​ AWS и далее​ «» Then On​ Exit Sub Else​ min​ If SearchRange.Cells(i) Like​ знал, давно не​ принтеры работают медленнее»​ популярны из-за относительно​ «15» Then Rows(r).Delete​ вот так:​ часть кода, показанного​ оставлять комментарии. Комментарии​ начальника (или любого​

​ выбор из двух​​пребывал по всякому,​ под эти линии)​
​:​ цикл​

​ Error Resume Next:​​ j = x.Column​

​нужно чтобы после​​ Condition Then If​
​ использовал — и​ & vbNewLine St​ невысокой цены. Существует​ Next r End​If (index =​ выше, не удалось​ – это строки​ работника отдела), сверять​
​ списков, код сделал​ работает только если​вставляемый текст из​combat​Lofak​ Set ws =​ Application.ScreenUpdating = False:​ «max» остальное было​ MergeIf <> Empty​ уже забыл как.​ = St +​ » & vbNewLine​ If​ 1 And sColor1​ понять – далее​ в коде, которые​ его отдел с​ вот так…​ активен лист с​ ячеек распределяется в​, добрый день!​, либо вычистите​ ThisWorkbook.Sheets(CStr(aws.Cells(i, j))) If​ Set aws =​ на второй строке…​ Then MergeIf =​Как перенести строку​ «(в страницах в​ & _ «множество​The_Prist​ = «красный») Or​ в учебнике мы​ исполняют роль заметок​ отделами всех остальных,​
​Roman777​ которого берутся данные,​ соответствии со свойствами​Честно, не знаю​все​ Err <> 0​ Sheets(«Общая база») For​Chr(13) + Chr​ MergeIf & TextRange.Cells(i)​

​ кода с помощью​​ минуту), чем лазерные​

​ моделей таких принтеров,​​: А что, в​
​ _ (index =​ рассмотрим эту тему​ и помогают разобраться,​ и только те,​:​

​ все указано в​​ «переносить по словам»​​ как полностью граммотно​​листы до того​ Then Set ws​ i = aws.Cells(Rows.Count,​ (10) не помогает​ & vbCrLf Else​ нижнего подчеркивания: «_»?​ принтеры, и требуют​ включая модели, специально​ Яндексе забанили?​ 2 And sColor1​ подробнее. Цель приведённого​ какие действия выполняет​

​ где отделы совпадают,​​combat​
​ сообщении 4, там​ в коде …​ решить Вашу задачу.​ как переносить данные​ = Sheets.Add: ActiveSheet.Name​ j).End(xlUp).Row To 2​Cheery​ MergeIf = TextRange.Cells(i)​Заранее благодарен​ регулярной замены картриджа​ предназначенные » &​If Cells(r, b.Column).Value​ = «синий») Or​ примера – продемонстрировать,​ та или иная​ добавлять в комбобокс)))​, я думаю что​ же и файл​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Worksheets(«РСИ»).Cells(15, 1) = «Средство​ Но вы как​ из основной базы​ = aws.Cells(i, j):​ Step -1 If​: With TextBox1​ & vbCrLf End​vb.net MsgBox( _​ с чернилами» a​ vbNewLine & _​ = «14» And​ _ (index =​ как при помощи​ часть кода.​combat​ второй мб опять​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>ComboBox1.List = Worksheets(«Специалисты»).Range(«A1», Cells(Rows.Count,​​ измерения » &​ минимум могли бы​Добавлено через 5 минут​

​ On Error GoTo​​ aws.Cells(i, j) <>​​.MultiLine = True​ If End If​ «Hello, World» _​
​ = MsgBox(St, vbInformation​ «для печати цветных​ _ Cells(r, c.Column).Value​ 3 And sColor1​ комментариев поясняется каждый​Комментарии не участвуют в​: Где-то рядом, но​
​ где-то неправильно был​​ «A»).End(xlUp)).Value​ Lbl.Caption​ использовать те же​например так​ 0 aws.Cells.Copy ws.rows.delete​

​ «» Then On​​.Text = «line​ Next i End​
​ , MsgBoxStyle.Information)​ + vbOKOnly, «Справка»)​

​ фотографий.» & vbNewLine​​ = «15» Then​​ = «зеленый») Or​​ блок кода.​ процессе выполнения программы​ пока решение не​ применён… сразу замечу,​если активен лист​вообщем все оказалось​ формулы, что у​Sub ClearPages() For​
​ ws.Cells.PasteSpecial Paste:=xlPasteColumnWidths ws.Cells.PasteSpecial​ Error Resume Next:​ one» & Chr(13)​ Function​

​excel_pl​​ End SubvbCrLf​ & vbNewLine &​ _ Rows(r).Delete​ _ (index =​Часто программисты ленятся добавлять​ и не влияют​

​ нашел​​ что если у​​ «РСИ» не работает,​​ очень просто, и​ Вас есть, просто​ i = 1​ Paste:=xlPasteFormats End If​ Set ws =​ _​Kuzmich​: Код сцепляет столбец​
​Символ переноса в VBA​ _ «Недостатки. В​SuperCat​ 4 And sColor1​ подробные комментарии к​ на результат работы​
​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Dim i As Variant​​ Вас данные в​​ если лист «Специалисты»​​ без заморочек, правда​ записав их в​ To Sheets.Count Set​
​ aws.Rows(i).Copy ws.Cells(Rows.Count, 1).End(xlUp).Offset(1)​
​ ThisWorkbook.Sheets(CStr(aws.Cells(i, j))) If​
​& «line 2″​: В ячейке включить​ по критериюСкрытый текст​: Помогите пожалуйста!​ большинстве случаев струйные​: If Cells(r, b.Column).Value​ = «коричневый») Then​ своему коду, но,​

​ макроса. Каждая строка,​​For i =​ одинаковых строках в​

​ работает, в общем​​ пришлось подбирать шрифт,​​ коде ВБА, например:​​ ws = Sheets(i)​ End If: Next​ Err <> 0​ & Chr(13) _​

​ перенос по словам​​ Option Compare Text​В интернете есть​ принтеры работают медленнее»​ = «14» And​Если рассмотренный оператор​ поверьте, затраченные усилия​ начинающаяся апострофом (‘),​ 1 To Worksheets(«Специалисты»).Cells(Rows.Count,​ столбце «А» и​ надо, что бы​ необходимо было большое​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(ДЛСТР(BC3)​ If ws.Name <>​

​ End Sub​​ Then Set ws​​& «line 3″​​ Dim OutText As​

CyberForum.ru

Корректный перенос текста по строкам (Формулы/Formulas)

​ Function MergeIf(TextRange As​​ такой макрос:​ & vbNewLine &​ _ Cells(r, c.Column).Value​
​If​ оправдают себя с​ будет считаться в​ «A»).End(xlUp).Row​
​ «B», можно было​ работало при активном​ межстрочное пространство, у​Значение, которое у​ «Общая база» Then​
​Lofak​ = Sheets.Add: ActiveSheet.Name​End With​ String Delimeter =​ Range, SearchRange As​
​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub MergeToOneCell()​ _ «(в страницах​ = «15» _​разбит на четыре​
​ избытком! Несколько минут,​ VBA комментарием. Редактор​ComboBox1.AddItem Worksheets(«Специалисты»).Cells(i, «A»).Value​ бы обойтись и​ листе «РСИ»​ вас его может​ Вас в BC3​ ws.Rows.Delete Next End​
​: Что-то все равно​ = aws.Cells(i, j):​Ivantrs​

​ Chr(10)​​ Range, Condition As​​Const sDELIM As​​ в минуту), чем​
​ Then Rows(r).Delete​ строки, то составляющие​ потраченных на написание​ VBA в Excel​Next i​ одним циклом. И​Roman777​ не быть и​ запишите в одну​ Sub​
​ не так, не​
​ On Error GoTo​: установи у ТекстБокса​excel_pl​ String) Dim Delimeter​ String = "​ лазерные принтеры, и​Kucherov​ его блоки c​ понятного комментария, могут​ выделит такую строку​
​For i =​
​ вообще​
​:​
​ будет не корректно​
​ переменную, например Namess,​Lofak​ чистит​ 0 aws.Cells.Copy ws.Cells.PasteSpecial​ свойство Multiline в​
​: А каких-нибудь спец.​ As String, i​ " 'символ-разделитель​ требуют регулярной замены​

​: Спасибо, извините, тупанул,​​ условиями видны гораздо​ сэкономить Вам долгие​
​ зелёным цветом шрифта,​ 1 To Worksheets("Специалисты").Cells(Rows.Count,​200?'200px':''+(this.scrollHeight+5)+'px');">Worksheets("Специалисты").Cells(Rows.Count, "A").End(xlUp).Row​combat​ показывать, подобрал шрифт​ а длину, которую​: Благодарю вас, то​Burk​
​ Paste:=xlPasteColumnWidths ws.Cells.PasteSpecial Paste:=xlPasteFormats​ True​ символов вместо запятой​ As Long Delimeter​
​Dim rCell As​ картриджа с чернилами",​ не поставил пробел​
​ более наглядно. Этот​
​ часы в будущем.​ чтобы с первого​

​ "B").End(xlUp).Row​
​- просто определяет​
​, Добрый день!​ Ebrima​ вы пишите в​
​ что нужно!​:​ End If aws.Rows(i).Copy​Gruz​ для строчки "​
​ = ", "​ Range​ vbInformation + vbOKOnly,​ перед "_"​ пример иллюстрирует, как​

​Другой приём, делающий написанный​​ взгляда было понятно,​ComboBox2.AddItem Worksheets(«Специалисты»).Cells(i, «B»).Value​ последнюю из заполненных​Я не знаю​далее, следующая для​ ячейке BB15 можно​
​Burk​Ну и его надо​ ws.Cells(Rows.Count, 1).End(xlUp).Offset(1) End​: може memo используй?​Delimeter = «, «​
​ 'символы-разделители (можно заменить​Dim sMergeStr As​ "Справка") End Sub​
​Hugo​ аккуратное оформление может​ код более читаемым​ что это комментарий,​Next i​ строк для столбца​ что вы пытаетесь​ меня проблема, вроде​ записать в другую​:​ поставить до цикла​
​ If: Next End​Walker​» нету?​ на пробел или​ String​Казанский​
​: Эту кучу AND​
​ сделать код более​ – правильно расставлять​
​ который не будет​
​думаю связать так:​
​ «А» и думаю,​
​ сделать когда пишите:​ должно все работать,​
​ переменную или явно​
​Lofak​ по I​
​ Sub​
​: Используйте стандартную константу:​
​например, что-нибудь в​ ; и т.д.)​
​If TypeName(Selection) <>​: Private Sub Command2_Click()​
​ оптимальнее разбить на​ читаемым и привести​
​ отступы. В приведённом​ выполняться.​
​ при выборе из​ что лучше всего​Я обычно добавляю​
​ но не срабатывает​
​ указывать в коде:​, просто хотелось, чтобы​
​А на то,​Может кто нибудь​
​ vbCrLf​
​ духе :​ ‘если диапазоны проверки​ «Range» Then Exit​ a = MsgBox(«Струйные​ цепочку вложенных ЕСЛИ-ТО​
​ в результате к​ выше примере видно,​
​Ниже продемонстрировано, как при​ ComboBox1 первой строки,​
​ не пересчитывать его​
​ данные так (сразу​ код в форме​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>if len(Namess) Name=Namess​

​ вы, учитывая подсказки,​​ что вам пишут​ помочь добавить функцию​TextBox1.Text = «Максимальное​rn​ и склеивания не​ Sub ‘если выделены​ принтеры печатают текст​ — может когда-нибудь​ меньшему количеству ошибок​
​ что отступ сделан​ помощи комментариев поясняется​ назначить второй столбец​ на каждом шаге​ не заметил что​ ComboBox1 иComboBox2​else​
​ сами это сделали,​ вы внимания не​
​ очистки дополнительных листов​ число = «​;​ равны друг другу​ не ячейки -​ и изображения, разбрызгивая​ сэкономите даже пару​

​ и путаницы.​​ для кода внутри​​ работа простой процедуры​​ ComboBox2, при выборе​
​ цикла, а запихнуть​ у Вас Рендж):​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub UserForm_Initialize()​
​Name=Left(Namess,Find(» «, Namess,45)-1))​ но, видимо, рано​ обращаете??? А цикл​ перед копированием туда​
​ & max &​
​Sanja​ - выходим с​ выходим​
​ на бумагу мелкие​
​ минут работы кода...​
​Урок подготовлен для Вас​

​ главной процедуры​Sub​ ComboBox1 второй строки,​ в переменную (предварительно​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub UserForm_Initialize()​ListBox1.ColumnCount = 2​end if​Lofak​ по по строкам​ информации из первого​

​ vbCrLf & «​​: Kuzmich, же Вам​​ ошибкой If SearchRange.Count​​With Selection​ капли чернил.» &​ кто знает что​ командой сайта office-guru.ru​Sub​:​ назначить третий столбец​
​ посчитав 1 раз)​For i =​

​ ‘​​Гдe Name -​: Скорее уже поздно,​ у вас в​ листа, что бы​ Минимальное число =​ показал​
​ <> TextRange.Count Then​For Each rCell​ vbLf & _​ там будет в​
​Источник: http://www.excelfunctions.net/VBA-Code-Presentation.html​
​и далее отступ​' процедура Sub​ ComboBox2 и так​
​ и потом уже​
​ 1 To Worksheets("Специалисты").Cells(Rows.Count,​
​ListBox1.ColumnWidths = "0;"​ переменная, получаемое значение​ когда-то учился, но​
​ строке 6​
​ информация не дублировалась​

​ » & min​Юрий М​ MergeIf = CVErr(xlErrRef)​ In .Cells​

​ «Струйные принтеры популярны​​ другой раз.​​Перевел: Антон Андронов​​ увеличивается для каждого​ для просмотра диапазона​ далее и как​ использовать из памяти,​ «A»).End(xlUp).Row​CommandButton2.Enabled = False​ которой Вы будете​ так толком и​Lofak​ при каждом последующем​Lofak​: excel_pl, Вы не​
​ Exit Function End​​sMergeStr = sMergeStr​ из-за относительно невысокой​JayBhagavan​Автор: Антон Андронов​ вложенного блока кода.​ ячеек A1-A100 активного​ сделать не пойму…​ так что сам​ComboBox1.AddItem Worksheets(«Специалисты»).Cells(i, «A»).Value​’…………………………………….​ записывать в ячейку​ не освоил программирование,​, под ЕГО имеется​ запуске?​
​: Доброго времени суток,​ отписались в своих​
​ If ‘проходим по​ & sDELIM &​
​ цены.» & vbLf​: Пробел, нижнее подчёркивание,​
​Kucherov​ Такие увеличенные отступы​
​ ‘ листа и​
​RAN​ себя поправлю:​Next i​Set SRng =​ M15​ да и долгое​ ввиду оператор чистки,​Burk​ имеется таблица exel​
​ старых темах, а​

​ все ячейкам, проверяем​​ rCell.Text ‘собираем текст​:D
​ & _ "Существует​
​ энтер.​: Добрый день!​
​ помогают понять, где​ поиска ячейки, содержащей​
​: Правильно! Зачем искать​

​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Dim i as​​End Sub​​ Sheets(«БазаСИ»).Range(«B1») ‘​​Для ячейки A17​ время занимался другим​ а вы засунули​
​: Rows.Delete​​ в которую вносятся​ уже создали новую.​ условие и собираем​ из ячеек​ множество моделей таких​
​tarakano​Как можно перенести​ каждый отдельный блок​ переданную процедуре строку​ там, где потерял,​ long​Честно говоря, точно​’…………………………………….​ можно по аналогии​ делом, сейчас периодически​ его внутрь цикла​Lofak​ данные, с некоторыми​ Или ответы не​

​ текст в переменную​​Next rCell​ принтеров, включая модели,​: подскажите пожалуйста, что​
​ строки в Макросе?​
​ кода начинается и​ Sub Find_String(sFindText As​ когда там, где​
​Dim i_n as​
​ сам не знаю​
​Set SRng =​ формулу записать в​ возникает такая необходимость,​
​ ?????​
​: Добавить новую строку?​

​ дополнительными параметрами, нужно​ интересуют?​ OutText For i​Application.DisplayAlerts = False​ специально предназначенные для​ нужно дописывать в​ Нажимаю пробел -​ заканчивается.​ String) Dim i​ светло удобнее.​

​ long​​ почему Ваш способ​ Range(SRng, SRng.End(xlDown))​ коде ВБА.​ пытаюсь что-то вспоминать,​

excelworld.ru

​Lofak​

Переход на следующую строку

slonuu

Дата: Четверг, 21.08.2014, 20:31 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 6


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Добрый день. Подскажите пожалуйста как исправить код макроса, так чтобы при каждом нажатии кнопки ячейка $А прибавляла 1, т.е. переходила на нижнюю строку?

[vba]

Код

Application.Run «ATPVBAEN.XLAM!Regress», ActiveSheet.Range(«$A$2:$A$116»), _
ActiveSheet.Range(«$B$2:$B$116»), False, False, , ActiveSheet.Range(«$G$1») _
, False, False, False, False, , False

[/vba]

Заранее спасибо.
Игорь
Удалено. Нарушение Правил форума

 

Ответить

wild_pig

Дата: Четверг, 21.08.2014, 21:20 |
Сообщение № 2

Группа: Проверенные

Ранг: Обитатель

Сообщений: 516


Репутация:

97

±

Замечаний:
0% ±


2003, 2013

Это что за покемон?
Это параметры с которыми запускается никому не известный макрос?

 

Ответить

ikki

Дата: Четверг, 21.08.2014, 21:38 |
Сообщение № 3

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

Алексей, ну почему же «никому не известный»?
ATPVBAEN.XLAM — стандартная надстройка Пакет анализа VBA
вот только что и где менять — из кода непонятно.
а — даже неизвестно, что такое :)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

slonuu

Дата: Четверг, 21.08.2014, 21:49 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 6


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

При каждом нажатии кнопки должен меняться верхний диапазон $A$2 , $A$3, $A$4 и т.д. , а нижний должен оставаться прежним $A$116.

 

Ответить

slonuu

Дата: Четверг, 21.08.2014, 21:51 |
Сообщение № 5

Группа: Пользователи

Ранг: Прохожий

Сообщений: 6


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Application.Run «ATPVBAEN.XLAM!Regress», ActiveSheet.Range(«$A$2:$A$116»), _
ActiveSheet.Range(«$B$2:$B$116»), False, False, , ActiveSheet.Range(«$G$1») _
, False, False, False, False, , False

При каждом нажатии кнопки должен меняться верхний диапазон ($A$2 , $A$3, $A$4 и т.д.) и ($B$2 , $B$3, $B$4 и т.д.) , а нижний должен оставаться прежним $A$116 и $B$116.
Если кто знает подскажите.

 

Ответить

ikki

Дата: Четверг, 21.08.2014, 21:59 |
Сообщение № 6

Группа: Друзья

Ранг: Старожил

Сообщений: 1906


Репутация:

504

±

Замечаний:
0% ±


Excel 2003, 2010

файл не желаете приложить?
ибо по сто раз переписывать неохота.

примерно так:

[vba]

Код

public n& ‘ глобальная переменная  

sub t() ‘ вешаем на кнопку
     if n=0 then  
         n=2
     elseif n<116 then
         n=n+1
     else
         exit sub
     end if
     Application.Run «ATPVBAEN.XLAM!Regress», ActiveSheet.Range(«$A$» & n & «:$A$116»), _  
     ActiveSheet.Range(«$B$» & n & «:$B$116»), False, False, , ActiveSheet.Range(«$G$1») _  
     , False, False, False, False, , False
end sub

[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki

 

Ответить

slonuu

Дата: Четверг, 21.08.2014, 22:01 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 6


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Спасибо. Сейчас попробую.

 

Ответить

slonuu

Дата: Четверг, 21.08.2014, 22:06 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 6


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Большое спасибо. Всё получилось.

 

Ответить

Во первых, чтобы не копировать иероглифы, нужно в окне с кодом переключиться на русский язык.
Во вторых, в данном случае вместо Application лучше написать WorksheetFunction.
В третьих, у вас в коде написано:

' НомерСтроки - Кол-во непустых ячеек в колонке "1" + 1, а не номер первой пустой строки

Если в 1-й колонке таблицы есть хотя бы одна пустая строка, то намерения вставить новую запись в конец таблицы будут не выполнены. Поэтому замените на:

' НомерСтроки - Номер первой пустой строки на рабочем листе
НомерСтроки = ActiveSheet.Cells.SpecialCells(xlLastCell).Row + 1

UPD: Количество непустых ячеек (при их наличии) к колонке активной ячейки можно посчитать:

КолНепустых = ActiveCell.SpecialCells(xlCellTypeLastCell).Row - _
  ActiveCell.EntireColumn.SpecialCells(xlCellTypeBlanks).Count

0 / 0 / 0

Регистрация: 18.01.2019

Сообщений: 1

1

Excel

18.01.2019, 14:18. Показов 4159. Ответов 2


Студворк — интернет-сервис помощи студентам

Мне необходимо ввести список данных: код, имя, фамилия, адрес. Как заставить курсор переходить на новую строку после введения данных в последнюю колонку. Как должен выглядеть макрос и как его заставить работать?



0



Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

18.01.2019, 14:25

2

вариант

Visual Basic
1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
   If Len(Target.Value) > 0 Then Cells(Target.Row + 1, 1).Select
End If
End Sub



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.01.2019, 19:07

3

Alexashkaa, если переходить по ячейкам про заполнении с помощью Tab, Shift+Tab, то при нажатии Enter Excel сам выделит ячейку под первой ячейкой последовательности. Попробуйте выделить ячейку где-то в середине листа и нажать
q<Tab> w<Tab> e<Enter>
a<Tab> s<Tab> c<Shift+Tab><Tab> d<Enter>
Shift+Enter выделяет ячейку в строке выше.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

18.01.2019, 19:07

3

Формулировка задачи:

Мне необходимо ввести список данных: код, имя, фамилия, адрес. Как заставить курсор переходить на новую строку после введения данных в последнюю колонку. Как должен выглядеть макрос и как его заставить работать?

Код к задаче: «Переход на новую строку в Excel-е»

textual

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
   If Len(Target.Value) > 0 Then Cells(Target.Row + 1, 1).Select
End If
End Sub

Полезно ли:

11   голосов , оценка 3.909 из 5

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

Содержание

  1. Как удалить переносы строк из ячеек в Excel 2013, 2010 и 2007
  2. Удаляем возвраты каретки вручную
  3. Удаляем переносы строк при помощи формул Excel
  4. Удаляем переносы строк при помощи макроса VBA
  5. Перенос текста в ячейке
  6. Автоматический перенос текста
  7. Настройка высоты строки для отображения всего текста
  8. Ввод разрыва строки
  9. Как сделать перенос строки в ячейке Excel формулой
  10. Формула для переноса строки в ячейках Excel
  11. Как работает функция СИМВОЛ при переносе строк в ячейке
  12. Деление на столбцы по переносу строки
  13. Деление на строки по Alt+Enter через Power Query
  14. Макрос для деления на строки по Alt+Enter
  15. Выводы

Как удалить переносы строк из ячеек в Excel 2013, 2010 и 2007

Существует 3 метода, позволяющих реализовать удаление возврата каретки из полей. Некоторые из них реализуют замещение знаков переноса строчки. Рассмотренные ниже варианты одинаково работают в большинстве версий табличного редактора.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

1

Перенос строчки в текстовой информации возникает по самым разнообразным причинам. К частым причинам относятся такие моменты, как использование сочетания клавиш «Alt+Enter», а также перенос текстовых данных из интернет-странички в рабочую область табличной программы. Нам необходимо произвести удаление возврата каретки, так как без этой процедуры невозможно реализовать нормальный поиск точных фраз.

Важно! Изначально фразы «Перевод строчки» и «Возврат каретки» применялись во время работы на печатных машинах и обозначали 2 разнообразных действия. Персональные компьютеры создавались с учетом функций машинок для печати.

Удаляем возвраты каретки вручную

Разберем детально первый метод.

  • Преимущество: быстрота выполнения.
  • Недостаток: отсутствие дополнительных функций.

Подробная инструкция выглядит так:

  1. Производим выделение всех ячеек, в которых необходимо реализовать данную операцию или же осуществить замену знаков.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

2
  1. При помощи клавиатуры жмем комбинацию кнопок «Ctrl+H». На экране возникло окошко, имеющее наименование «Найти и заменить».
  2. Выставляем указатель в строчку «Найти». При помощи клавиатуры жмем комбинацию кнопок «Ctrl+J». В строчке появилась небольшая точка.
  3. В строчку «Заменить на» вводим какое-нибудь значение, которое вставится вместо возвратов каретки. Чаще всего применяют пробел, так как он позволяет исключить склеивание 2-х соседствующих фраз. Для реализации удаления переноса строчек необходимо строчку «Заменить на» не заполнять какой-либо информацией.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

3
  1. При помощи ЛКМ щелкаем на «Заменить все». Готово! Мы реализовали удаление возврата каретки.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

4

Удаляем переносы строк при помощи формул Excel

  • Преимущество: возможность применения разнообразных формул, осуществляющих сложнейшую проверку текстовой информации в выбранном поле. К примеру, можно реализовать удаление возвратов каретки, а потом отыскать ненужные пробелы.
  • Недостаток: необходимо создание дополнительной колонки, а также выполнение большого количества манипуляций.

Подробная инструкция выглядит так:

  1. Реализуем добавление дополнительной колонки в конце исходной информации. В рассматриваемом примере она получит наименование «1 line»
  2. В 1-е поле дополнительной колонки (С2) вбиваем формулу, реализующую удаление или замену переносов строчек. Для осуществления этой операции применяется несколько формул. Формула, подходящая для применения с сочетаниями возврата каретки и переноса строчки, выглядит так: =ПОДСТАВИТЬ(ПОДСТАВИТЬ(В2;СИМВОЛ(13);»»);СИМВОЛ(10);»»).
  3. Формула, подходящая для осуществления замены переноса строчки каким-либо знаком, выглядит так: =СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(В2;СИМВОЛ(13);»»);СИМВОЛ(10);», «). Стоит заметить, что в этом случае не произойдет объединение строчек.
  4. Формула, позволяющая произвести удаление всех непечатаемых знаков из текстовых данных, выглядит так: =ПЕЧСИМВ(B2).

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

5
  1. Производим копирование формулы, а затем вставляем ее в каждую ячейку дополнительной колонки.
  2. Дополнительно можно осуществить замену первоначальной колонки новой, в которой будут удалены переносы строчек.
  3. Производим выделение всех ячеек, располагающихся в колонке С. Зажимаем комбинацию «Ctrl+C» на клавиатуре, чтобы реализовать копирование информации.
  4. Производим выбор поля В2. Зажимаем комбинацию кнопок «Shift+F10». В возникшем небольшом перечне жмем ЛКМ на элемент, имеющий наименование «Вставить».
  5. Реализуем удаление вспомогательной колонки.

Удаляем переносы строк при помощи макроса VBA

  • Преимущество: создание происходит только 1 раз. В дальнейшем этот макрос можно применять и в остальных табличных документах.
  • Недостаток: необходимо понимание работы языка программирования VBA.

Для реализации этого метода нужно попасть в окошко для ввода макросов и ввести туда такой код:

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

6

Перенос текста в ячейке

Табличный редактор Эксель позволяет осуществить перенос текстовой информации в поле. Это делается для того, чтобы текстовые данные выводились на нескольких строчках. Можно произвести процедуру настройки для каждого поля, чтобы перенос текстовых данных производился в автоматическом режиме. Дополнительно можно реализовать разрыв строчки ручным способом.

Автоматический перенос текста

Разберем детально, как реализовать процедуру автоматического переноса текстовых значений. Пошаговый алгоритм выглядит так:

  1. Производим выделение необходимой ячейки.
  2. В подразделе «Главная» находим блок команд, имеющий наименование «Выравнивание».
  3. При помощи ЛКМ выбираем элемент «Перенести текст».

Важно! Информация, находящаяся в ячейках, будет переноситься с учетом ширины колонки. Редактирование ширины колонки автоматически настроит перенос текстовых данных. 

Настройка высоты строки для отображения всего текста

Разберем детально, как реализовать процедуру настройки высоты строчки для вывода всей текстовой информации. Подробная инструкция выглядит так:

  1. Производим выбор нужных ячеек.
  2. В подразделе «Главная» находим блок команд, имеющий наименование «Ячейки».
  3. При помощи ЛКМ выбираем элемент «Формат».
  4. В окошке «Размер ячейки» необходимо выполнить один из нижеописанных вариантов. Первый вариант – для автоматического выравнивания высоты строчки жмем ЛКМ на элемент «Автоподбор высоты строки». Второй вариант – для задания высоты строчек ручным способом необходимо кликнуть на элемент «Высота строки», а затем вбить желаемый показатель в пустую строчку.

Ввод разрыва строки

Разберем детально как реализовать процедуру ввода разрыва строчки. Подробная инструкция выглядит так:

  1. Двойным нажатием ЛКМ осуществляем выбор поля, в которое желаем вбить разрыв строчки. Стоит заметить, что можно произвести выделение необходимого поля, а потом щелкнуть на «F2».
  2. Двойным нажатием ЛКМ осуществляем выбор того места, где будет добавлен разрыв строчки. Зажимаем комбинацию «Alt+Enter». Готово!

Как сделать перенос строки в ячейке Excel формулой

Часто пользователи табличного редактора добавляют на рабочую область разнообразные диаграммы и графики. Обычно эта процедура требует переноса строчек в текстовой информации поля. Детально разберемся, как реализовать этот момент.

Формула для переноса строки в ячейках Excel

К примеру, у нас есть гистограмма, реализованная в табличной программе. На оси Х располагаются имена работников, а также информация об их продажах. Этот тип подписи очень удобен, так как он наглядно показывает объем работ, совершаемый работниками.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

7

Реализовать эту процедуру очень легко. Нужно произвести добавление оператора СИМВОЛ в место формулы. Она позволяет реализовать генерацию показателей в полях для подписи информации в диаграмму.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

8

Безусловно, в поле можно реализовать процедуру переноса строчки в любом месте, благодаря комбинации кнопок «Alt+Enter». Однако такой метод неудобен в случаях, когда данных слишком много.

Как работает функция СИМВОЛ при переносе строк в ячейке

Программа использует коды из таблички знаков ASCII. В ней располагаются коды знаков, отображаемых на дисплее в ОС. В табличке содержится двести пятьдесят пять пронумерованных кодов.

Пользователь табличного редактора, знающий эти коды, может применить их в операторе СИМВОЛ, чтобы реализовать вставку любого знака. В примере, рассмотренном выше, добавлен знак переноса строчки, который соединяется с двух сторон «&» между показателями полей С2 и А2. Если в поле не активирован режим под названием «Перенести текст», то наличие знака переноса строчки пользователь не заметит. Это видно на нижеприведенном изображении:

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

9

Стоит отметить, что на разнообразных графиках знаки переноса строчек, добавленные при помощи формулы, будут выводиться стандартным образом. Иными словами, будет производиться разбитие текстовой строчки на 2 и более.

Деление на столбцы по переносу строки

Если юзер в подразделе «Данные» выберет элемент «Текст по столбцам», то он сможет реализовать перенос строчек и разделение тестовой информации на несколько ячеек. Процесс осуществляется при помощи комбинации «Alt+Enter». В окошке «Мастер распределения текста по столбцам» необходимо поставить галочку около надписи «другой» и ввести сочетание «Ctrl+J».

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

10

Если поставить галочку около надписи «Считать последовательные разделители одним», то можно реализовать «схлопывание» нескольких переносов строчек подряд. На конченом этапе щелкаем на «Далее». В итоге мы получим:

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

11

Деление на строки по Alt+Enter через Power Query

Бывают ситуации, когда пользователю необходимо осуществить деление многострочной текстовой информации не на колонки, а на строчки.

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

12

Для реализации этой процедуры отлично подходит надстройка «Power Query», появившаяся в табличном редакторе с 2016 года. Подробная инструкция выглядит так:

  1. При помощи комбинации «Ctrl+T» преобразуем исходные данные в «умную» табличку. Альтернативный вариант – передвигаемся в подраздел «Главная» и кликаем ЛКМ на элемент «Форматировать как таблицу».
  2. Передвигаемся в подраздел «Данные» и щелкаем на элемент «Из таблицы/диапазона». Эта операция позволит импортировать табличку в инструмент «Power Query».

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

13
  1. Производим выделение колонки с многострочной текстовой информацией. Передвигаемся в подраздел «Главная». Раскрываем перечень показателя «Разделить столбец» и кликаем ЛКМ на элемент «По разделителю».

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

14
  1. Жмем на «ОК», чтобы подтвердить внесенные изменения. Готово!

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

15

Макрос для деления на строки по Alt+Enter

Рассмотрим, как реализовать эту процедуру при помощи специального макроса. Производим открытие VBA при помощи комбинации клавиш «Alt+F11» на клавиатуре. В возникшем окошке жмем «Insert», а затем «Module». Сюда добавляем такой код:

simvol-perenosa-stroki-v-excel-kak-sdelat-perenos-stroki-v-yachejke-excel-vse-sposoby

16

Возвращаемся на рабочую область и выбираем поля, в которых располагается многострочная информация. Жмем комбинацию «Alt+F8» на клавиатуре, чтобы активировать созданный макрос.

Выводы

Исходя из текста статьи, можно заметить, что существует огромное количество способов, реализующих перенос строчки в табличном документе. Произвести эту процедуру можно при помощи формул, операторов, специальных инструментов и макросов. Каждый юзер сможет сам подобрать для себя наиболее удобный метод.

Оцените качество статьи. Нам важно ваше мнение:

VBA Excel. Перенос кода процедуры и текста на новую строку

Перенос части кода одного выражения VBA Excel на другую строку. Объединение нескольких операторов в одной строке. Программный перенос текста на новую строку.

Обратите внимание, что в этой статье слова «оператор» и «выражение» употребляются в одном значении. Они обозначают минимальный исполняющийся код VBA, расположенный в одной строке.

Перенос части выражения на новую строку

Деление длинного оператора на части улучшит его читаемость, сделает код процедуры более наглядным и компактным, не позволит ему уходить за пределы видимого экрана справа.

Переносимые на новые строки части кода одного выражения разделяются символом нижнего подчеркивания (_), который ставится обязательно после пробела. Этот символ указывает компилятору VBA Excel, что ниже идет продолжение текущей строки.

Пример 1
Процедуры без переноса и с переносом части кода операторов:

Вы можете скопировать код Примера 1 и проверить его работоспособность. В обоих случаях информационное окно MsgBox покажет одинаковый результат.

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

Объединение операторов в одной строке

Множество коротких выражений в коде VBA Excel можно объединить в одной строке. Для этого используется символ двоеточия с пробелом «: », который указывает компилятору, что за ним идет следующий оператор.

Пример 2
Процедуры без объединения и с объединением операторов:

Во втором примере, как и в первом, информационное окно MsgBox покажет одинаковый результат.

Программный перенос текста на другую строку

Для программного переноса произвольного текста на новую строку в VBA Excel используются следующие ключевые слова:

  • vbCr – возврат каретки;
  • vbLf – перевод строки;
  • vbCrLf – возврат каретки и перевод строки, аналог нажатия клавиши «Enter»;
  • vbNewLine – новая строка.

Выражения «возврат каретки» и «перевод строки» идут от механических пишущих машин (печатных машинок).

Пример 3
Проверяем работоспособность перечисленных выше ключевых слов по программному переносу текста на новые строки в ячейке и информационном окне MsgBox:

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

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

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

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

Статья Как в Excel сделать перенос текста в ячейке

Very kind Developer

Часто требуется внутри одной ячейки 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 пропишем формулу

В итоге мы должны получить нужный нам результат.
Обратите внимание! Чтобы перенос строки корректно отображался необходимо включить «перенос по строкам» в свойствах ячейки.
Для этого выделите нужную нам ячейку (ячейки), нажмите на правую кнопку мыши и выберите «Формат ячеек. »

В открывшемся окне во вкладке «Выравнивание» необходимо поставить галочку напротив «Переносить по словам» как указано на картинке, иначе перенос строк в Excel не будет корректно отображаться с помощью формул.

Как в Excel заменить знак переноса на другой символ и обратно с помощью формулы

Можно поменять символ перенос на любой другой знак, например на пробел, с помощью текстовой функции ПОДСТАВИТЬ в Excel

Рассмотрим на примере, что на картинке выше. Итак, в ячейке B1 прописываем функцию ПОДСТАВИТЬ:

A1 — это наш текст с переносом строки;
СИМВОЛ(10) — это перенос строки (мы рассматривали это чуть выше в данной статье);
» » — это пробел, так как мы меняем перенос строки на пробел

Если нужно проделать обратную операцию — поменять пробел на знак (символ) переноса, то функция будет выглядеть соответственно:

Напоминаю, чтобы перенос строк правильно отражался, необходимо в свойствах ячеек, в разделе «Выравнивание» указать «Переносить по строкам».

Как поменять знак переноса на пробел и обратно в Excel с помощью ПОИСК — ЗАМЕНА

Бывают случаи, когда формулы использовать неудобно и требуется сделать замену быстро. Для этого воспользуемся Поиском и Заменой. Выделяем наш текст и нажимаем CTRL+H, появится следующее окно.

Если нам необходимо поменять перенос строки на пробел, то в строке «Найти» необходимо ввести перенос строки, для этого встаньте в поле «Найти», затем нажмите на клавишу ALT, не отпуская ее наберите на клавиатуре 010 — это код переноса строки, он не будет виден в данном поле.

После этого в поле «Заменить на» введите пробел или любой другой символ на который вам необходимо поменять и нажмите «Заменить» или «Заменить все».

Кстати, в Word это реализовано более наглядно.

Если вам необходимо поменять символ переноса строки на пробел, то в поле «Найти» вам необходимо указать специальный код «Разрыва строки», который обозначается как ^l
В поле «Заменить на:» необходимо сделать просто пробел и нажать на «Заменить» или «Заменить все».

Вы можете менять не только перенос строки, но и другие специальные символы, чтобы получить их соответствующий код, необходимо нажать на кнопку «Больше >>», «Специальные» и выбрать необходимый вам код. Напоминаю, что данная функция есть только в Word, в Excel эти символы не будут работать.

Как поменять перенос строки на пробел или наоборот в Excel с помощью VBA

Рассмотрим пример для выделенных ячеек. То есть мы выделяем требуемые ячейки и запускаем макрос

1. Меняем пробелы на переносы в выделенных ячейках с помощью VBA

Оформление кода VBA

Начиная практиковаться в написании кода VBA, очень важно с самого начала выработать хорошие привычки в оформлении кода, чтобы в дальнейшем написанный код было легко читать и понимать, как он работает.

В процессе написания кода, программист может иметь совершенно чёткое представление о том, что за код он пишет и как этот код должен работать. Но нужно позаботиться и о том, чтобы, вернувшись к работе спустя полгода, не пришлось ломать голову, пытаясь понять, что должен делать этот код. Ещё более неприятная ситуация – когда кто-то другой станет продолжать Вашу работу над кодом и не сможет понять, как он работает.

Эта статья посвящена комментариям, отступам в коде и переносам строк – элементам, которые делают код аккуратным и понятным.

Комментарии в VBA

Самое важное для написания аккуратного и понятного кода – чаще оставлять комментарии. Комментарии – это строки в коде, которые исполняют роль заметок и помогают разобраться, какие действия выполняет та или иная часть кода.

Комментарии не участвуют в процессе выполнения программы и не влияют на результат работы макроса. Каждая строка, начинающаяся апострофом (‘), будет считаться в VBA комментарием. Редактор VBA в Excel выделит такую строку зелёным цветом шрифта, чтобы с первого взгляда было понятно, что это комментарий, который не будет выполняться.

Ниже продемонстрировано, как при помощи комментариев поясняется работа простой процедуры Sub:

Не расстраивайтесь, если какую-то часть кода, показанного выше, не удалось понять – далее в учебнике мы рассмотрим эту тему подробнее. Цель приведённого примера – продемонстрировать, как при помощи комментариев поясняется каждый блок кода.

Часто программисты ленятся добавлять подробные комментарии к своему коду, но, поверьте, затраченные усилия оправдают себя с избытком! Несколько минут, потраченных на написание понятного комментария, могут сэкономить Вам долгие часы в будущем.

Отступы в коде VBA

Другой приём, делающий написанный код более читаемым – правильно расставлять отступы. В приведённом выше примере видно, что отступ сделан для кода внутри главной процедуры Sub и далее отступ увеличивается для каждого вложенного блока кода. Такие увеличенные отступы помогают понять, где каждый отдельный блок кода начинается и заканчивается.

Переносы строк в VBA

Ещё один способ сделать код более читаемым и облегчить работу с ним – делать переносы и разбивать одну длинную строку кода на несколько коротких. В VBA, чтобы разбить строку, нужно вставить символы ” _” (пробел+подчёркивание) непосредственно перед переносом строки. Это сообщает компилятору VBA, что текущая строка кода продолжается на следующей строке.

Следующий пример демонстрирует, как при помощи переносов строк можно сделать длинные строки кода гораздо более понятными и легко читаемыми.

Посмотрите на этот оператор If:

При помощи переносов строк тот же оператор If может быть записан вот так:

Если рассмотренный оператор If разбит на четыре строки, то составляющие его блоки c условиями видны гораздо более наглядно. Этот пример иллюстрирует, как аккуратное оформление может сделать код более читаемым и привести в результате к меньшему количеству ошибок и путаницы.

Titles = «Queen »
Name$ = «Elizabeth »
Numeral$ = «I»
Title$ & Name$ &. Numeral$ = «Queen Elizabeth I»
Title$ 6 Name$ & Numeral$ & Numeral$ = «Queen Elizabeth II»

Оператор & объединяет строки в том порядке, как они представлены. Поэтому, в отличие от суммирования чисел, для слияния строк важен их порядок следования. С помощью & можно складывать сколько угодно строковых значении. Ниже приведен пример с использованием уже объявленных выше переменных:

CurrentQueen$ = Title$ & Name$ & Numeral$ & Numeral$

Совет: Основным отличием оператора & от + является возможность использования & для объединения строковых данных с другими их типами. Например, выражение С=А% & В$ объединяет целочисленную и строковую переменные, изменяя тип их значений на variant.

У компьютера нет отдельного участка памяти для хранения текста, а еще одного — для чисел. Все, что поступает в память компьютера, преобразуется в числовой формат (реально — в двоичное представление). В программе помечается только, что данный участок оперативной памяти содержит закодированный текст. Обычно формат для преобразования текстовой информации в цифровую называется ASCII (American Standard Code for Information Interchange). Данный формат присваивает каждому символу соответствующее число в диапазоне от 0 до 255, хотя Windows не может вывести на экран все 255 символов и использует более ограниченный их набор ANSI (American National Standards Institute). Управляющие символы, а также специальные типа табуляции или перевода строки -имеют номера до 32. Значением функции Chr(n) является символ, соответствующий числу п из формата ASCII. Оператор

либо выводит на экран символ, соответствующий коду ASCII, текущим шрифтом, либо имеет место особый эффект в зависимости от типа управляющего символа. Например, оператор

выводит греческую букву «пи» на экране, если перед этим значение FontType было установлено как MS LineDraw при помощи окна Propoties или через Code.
Следующий пример использует код символа кавычек («), 34, для вывода на экран фразы, заключенной в кавычки с обеих сторон:

Print Chr (34) ;
Print «Quoth the raven, nevermore.» ;
Print Chr (34)

Совет: Функция Chr возвращает строку, хранимую в типе variant. Аналогичная более старая функция ChrS возвращает непосредственно строковое значение.

На экране будет выведено

«Quoth the raven, nevermore.»

Примечание: Предыдущий результат можно получить с помощью оператора:

Print «‘»‘Quoth the raven, nevermore.»»» ;

так как Visual Basic, в отличие от многих версий BASIC, воспринимает два символа кавычек как один и выводит его на экран в выражениях с оператором Print или при работе со строковыми значениями.

В Visual Basic существует функция Asc, параметром которой является строковое значение, а результат равняется коду ASCII для первого символа. Если строка пустая, функция выдаст ошибку во время выполнения (run time error).
Порядок ASCII/ANSI используется по умолчанию Visual Basic при сравнении различных строк с помощью операторов сравнения, таких как > и Примечание: Внутри Visual Basic используется Unicode — система, поддерживающая все возможные языки. В ней содержится порядка 65 тысяч различных символов. Более подробно об этом можно узнать из приложения к книге «Руководство программиста». За исключением нескольких особых ситуаций, включая двоичные файлы, переключение между ASCII и Unicode является вполне прозрачным для программиста.

Переход на новую строку

В ранних версиях Visual Basic одним из основных способов использования функции Chr является формирование управляющих символов для перехода к новой строке в программах. Переход к новой строке используется при работе с многостроковыми полями ввода или при добавлении информации в информационной панели. Как и в старых печатных машинках, для перехода на новую строку необходимо проделать две операции: перевод каретки (carriage return) для возврата к первому символу строки, а затем перевод строки для перехода на следующую строку. При использовании функции Chr переход на новую строку выглядит так:

vbCrLf = Chr (13) + Chr (10)

Но теперь имеется возможность использовать встроенную константу vbCrLf.
Например, необходимо разорвать строку в информационной панели или в многостроковом поле ввода. Быстрее всего это реализовать с использованием vbCrLf:

TextString$ = «Visual Basic For Windows» + vbCrLf
TextString$ = TextString$ + «Osborne McGraw-Hill» + vbCrLf
TextString$ = TextString$ + «Berkeley, CA»
Textl.Text = TextString$

Совет: Если пренебречь установкой свойства MultiLine в значение True и попробовать применить переход на новую строку, то на экране можно будет увидеть две интересные вертикальные линейки прокрутки.

Кстати, может возникнуть вопрос: почему строковые значения сначала «накапливаются», а только затем выводятся на экран. Ответ прост: это один из основных способов ускорения работы программ на Visual Basic.

Совет: Гораздо быстрее сначала скомпоновать всю строку, а затем использовать свойство Text, чем изменять его постоянно.

Аналогичным образом можно ускорить формирование информационной панели, если в ней необходимо вывести несколько строк:

Message$ = «This will be on line 1.»
Message = Message$ + vbCrLf + «This will be on line 2.»
MsgBox Message$

Другие полезные строковые константы

Кроме константы vbcrLf, существует еще ряд других, не менее полезных встроенных констант (см. таблицу далее). Все эти константы можно использовать в программах на Visual Basic вместо соответствующих значений функций Chr$ или Chr. Однако для Microsoft Windows применение найдут только коды для carriage return, line feed, tab и backspace.

Строки фиксированной длины

Строки фиксированной длины представляют собой специальный тип строки, в дальнейшем часто используемый. Подобные переменные создаются при помощи оператора Dim. Вот пример:

Dim ShortString As String * 10
Dim strShort As String * 10

Перенос текста в ячейке

Microsoft Excel обеспечивает перенос текста в ячейке для его отображения на нескольких строках. Ячейку можно настроить для автоматического переноса текста или ввести разрыв строки вручную.

Автоматический перенос текста

Выделите на листе ячейки, которые требуется отформатировать.

На вкладке Главная в группе Выравнивание выберите команду Перенести текст .

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

Если текст с переносами отображается не полностью, возможно, задана точная высота строки или текст находится в объединенных ячейках.

Настройка высоты строки для отображения всего текста

Выделите ячейки, для которых требуется выровнять высоту строк.

На вкладке Главная в группе Ячейки нажмите кнопку Формат.

В группе Размер ячейки выполните одно из следующих действий:

Чтобы автоматически выравнивать высоту строк, выберите команду Автоподбор высоты строки.

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

Совет: Кроме того, можно перетащить нижнюю границу строки в соответствии с высотой текста в строке.

Ввод разрыва строки

Новую строку текста можно начать в любом месте ячейки.

Дважды щелкните ячейку, в которую требуется ввести разрыв строки.

Совет: Можно также выделить ячейку, а затем нажать клавишу F2.

Дважды щелкните в ячейке то место, куда нужно вставить разрыв строки, и нажмите сочетание клавиш ALT+ВВОД.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

Понравилась статья? Поделить с друзьями:
  • Макрос скрытия ячеек excel
  • Макрос скрывающий пустые строки в excel
  • Макрос синтаксис if в excel
  • Макрос синонимайзер для word
  • Макрос сегодняшняя дата excel